Zastąp rozwlekły boilerplate JDBC mapowaniem obiektowo-relacyjnym JPA i EntityManager.
Porównanie kodu
✕ Java EE
String sql = "SELECT * FROM users WHERE id = ?";
try (Connection con = dataSource.getConnection();
PreparedStatement ps =
con.prepareStatement(sql)) {
ps.setLong(1, id);
ResultSet rs = ps.executeQuery();
if (rs.next()) {
User u = new User();
u.setId(rs.getLong("id"));
u.setName(rs.getString("name"));
}
}
✓ Jakarta EE 8+
@PersistenceContext
EntityManager em;
public User findUser(Long id) {
return em.find(User.class, id);
}
public List<User> findByName(String name) {
return em.createQuery(
"SELECT u FROM User u WHERE u.name = :name",
User.class)
.setParameter("name", name)
.getResultList();
}
Widzisz problem z tym kodem? Daj nam znać.
Dlaczego nowoczesne podejście wygrywa
Mapowanie obiektów
Encje to zwykłe adnotowane klasy — bez ręcznego tłumaczenia ResultSet na obiekt.
Zapytania z kontrolą typów
JPQL operuje na typach encji i polach zamiast surowych ciągów tabel i kolumn.
Wbudowane buforowanie
Pamięci podręczne pierwszego i drugiego poziomu automatycznie redukują liczbę odwołań do bazy.
Stare podejście
JDBC
Nowoczesne podejście
EntityManager JPA
Od JDK
11
Poziom trudności
Średniozaawansowany
Wsparcie JDK
JDBC kontra JPA
Dostępne
Szeroko dostępne od Jakarta EE 8 / Java 11
Jak to działa
JPA (Jakarta Persistence API) mapuje obiekty Java na wiersze bazy danych, eliminując ręczne przetwarzanie ResultSet i konkatenację ciągów SQL. EntityManager zapewnia find(), persist() i zapytania JPQL, więc pracujesz z obiektami domeny zamiast surowego SQL, a kontener zarządza pulą połączeń i transakcjami.
Powiązana dokumentacja
Dowód