Enterprise Intermédiaire

Déclarez une interface de référentiel et laissez Jakarta Data générer automatiquement l'implémentation du 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);
}
Un problème avec ce code ? Dites-le nous.
🪄

Zéro code répétitif

Déclarez l'interface ; le conteneur génère l'implémentation complète du DAO au déploiement.

🔍

Requêtes dérivées

Les noms de méthodes comme findByNameAndStatus sont analysés automatiquement — sans JPQL ni SQL.

🔌

Portable

N'importe quel runtime compatible Jakarta EE 11 fournit l'implémentation du référentiel sans dépendance au fournisseur.

Ancienne Approche
JPA EntityManager
Approche Moderne
Référentiel Jakarta Data
Depuis JDK
21
Difficulté
Intermédiaire
JPA versus Jakarta Data
Disponible

Disponible depuis Jakarta EE 11 / Java 21 (2024)

Jakarta Data (Jakarta EE 11) transforme l'accès aux données en une pure déclaration d'interface. Annotez une interface avec @Repository et étendez un type de référentiel intégré comme CrudRepository. Le runtime génère l'implémentation — y compris les requêtes dérivées de noms de méthodes comme findByName — donc pas de code répétitif EntityManager, pas de chaînes JPQL, pas de méthodes save/find écrites à la main.

Partager 𝕏 🦋 in