Replace verbose JDBC boilerplate with JPA's object-relational mapping and 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
Object mapping
Entities are plain annotated classes — no manual ResultSet-to-object translation.
Type-safe queries
JPQL operates on entity types and fields rather than raw table and column strings.
Built-in caching
First- and second-level caches reduce database round-trips automatically.
Stare podejście
JDBC
Nowoczesne podejście
JPA EntityManager
Od JDK
11
Poziom trudności
Średniozaawansowany
Wsparcie JDK
JDBC versus JPA
Dostępne
Widely available since Jakarta EE 8 / Java 11
Jak to działa
JPA (Jakarta Persistence API) maps Java objects to database rows, eliminating manual ResultSet processing and SQL string concatenation. EntityManager provides find(), persist(), and JPQL queries so you work with domain objects instead of raw SQL, while the container manages connection pooling and transactions.
Powiązana dokumentacja