Enterprise Intermediário

Substitua o boilerplate verboso do JDBC pelo mapeamento objeto-relacional e EntityManager do 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();
}
Viu um problema com este código? Nos avise.
🗺️

Mapeamento de objetos

Entidades são classes anotadas simples — sem tradução manual de ResultSet para objetos.

🔒

Consultas type-safe

JPQL opera sobre tipos e campos de entidades em vez de strings brutas de tabelas e colunas.

Cache integrado

Caches de primeiro e segundo nível reduzem round-trips ao banco de dados automaticamente.

Abordagem Antiga
JDBC
Abordagem Moderna
JPA EntityManager
Desde o JDK
11
Dificuldade
Intermediário
JDBC versus JPA
Disponível

Amplamente disponível desde o Jakarta EE 8 / Java 11

JPA (Jakarta Persistence API) mapeia objetos Java para linhas do banco de dados, eliminando o processamento manual de ResultSet e a concatenação de strings SQL. O EntityManager oferece find(), persist() e consultas JPQL para que você trabalhe com objetos de domínio em vez de SQL puro, enquanto o container gerencia o pool de conexões e as transações.

Compartilhar 𝕏 🦋 in