Enterprise Intermedio

Dichiara un'interfaccia repository e lascia che Jakarta Data generi automaticamente l'implementazione DAO.

✕ Jakarta EE 8+
@PersistenceContext
EntityManager em;

public User findById(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();
}

public void save(User user) {
    em.persist(user);
}
✓ Jakarta EE 11+
@Repository
public interface Users extends CrudRepository<User, Long> {
    List<User> findByName(String name);
}
Vedi un problema con questo codice? Faccelo sapere.
🪄

Zero boilerplate

Dichiara l'interfaccia; il container genera l'intera implementazione DAO al deploy.

🔍

Query derivate

I nomi dei metodi come findByNameAndStatus vengono analizzati automaticamente — nessun JPQL o SQL necessario.

🔌

Portabile

Qualsiasi runtime conforme a Jakarta EE 11 fornisce l'implementazione del repository senza vendor lock-in.

Approccio Vecchio
EntityManager JPA
Approccio Moderno
Repository Jakarta Data
Dal JDK
21
Difficoltà
Intermedio
JPA vs Jakarta Data
Disponibile

Disponibile da Jakarta EE 11 / Java 21 (2024)

Jakarta Data (Jakarta EE 11) trasforma l'accesso ai dati in una pura dichiarazione di interfaccia. Annoti un'interfaccia con @Repository ed estendi un tipo di repository integrato come CrudRepository. Il runtime genera l'implementazione — incluse le query derivate dai nomi dei metodi come findByName — quindi non c'è boilerplate EntityManager, nessuna stringa JPQL e nessun metodo save/find scritto a mano.

Condividi 𝕏 🦋 in