Enterprise Fortgeschritten

Ersetze ausführlichen JDBC-Boilerplate durch das objekt-relationale Mapping und den EntityManager von JPA.

✕ 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();
}
Problem mit diesem Code entdeckt? Sag uns Bescheid.
🗺️

Objekt-Mapping

Entities sind einfache annotierte Klassen — keine manuelle Übersetzung von ResultSet zu Objekt.

🔒

Typsichere Abfragen

JPQL arbeitet auf Entity-Typen und -Feldern statt auf rohen Tabellen- und Spaltenstrings.

Eingebautes Caching

First- und Second-Level-Caches reduzieren Datenbankzugriffe automatisch.

Alter Ansatz
JDBC
Moderner Ansatz
JPA EntityManager
Seit JDK
11
Schwierigkeitsgrad
Fortgeschritten
JDBC versus JPA
Verfügbar

Weitgehend verfügbar seit Jakarta EE 8 / Java 11

JPA (Jakarta Persistence API) bildet Java-Objekte auf Datenbankzeilen ab und eliminiert manuelles ResultSet-Processing und SQL-Stringverkettung. EntityManager stellt find(), persist() und JPQL-Abfragen bereit, sodass du mit Domänenobjekten statt mit rohem SQL arbeitest, während der Container Connection Pooling und Transaktionen verwaltet.

Teilen 𝕏 🦋 in