Enterprise Średniozaawansowany

Zastąp rozwlekły boilerplate JDBC mapowaniem obiektowo-relacyjnym JPA i EntityManager.

✕ 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ć.
🗺️

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
JDBC kontra JPA
Dostępne

Szeroko dostępne od Jakarta EE 8 / Java 11

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.