Enterprise Intermedio

Declara una interfaz de repositorio y deja que Jakarta Data genere la implementación del DAO automáticamente.

✕ 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);
}
¿Ves un problema con este código? Cuéntanos.
🪄

Cero código repetitivo

Declara la interfaz; el contenedor genera la implementación completa del DAO en tiempo de despliegue.

🔍

Consultas derivadas

Los nombres de métodos como findByNameAndStatus se analizan automáticamente — sin necesidad de JPQL ni SQL.

🔌

Portable

Cualquier runtime compatible con Jakarta EE 11 proporciona la implementación del repositorio sin dependencia de proveedor.

Enfoque Antiguo
JPA EntityManager
Enfoque Moderno
Repositorio Jakarta Data
Desde JDK
21
Dificultad
Intermedio
JPA versus Jakarta Data
Disponible

Disponible desde Jakarta EE 11 / Java 21 (2024)

Jakarta Data (Jakarta EE 11) convierte el acceso a datos en una pura declaración de interfaz. Anotas una interfaz con @Repository y extiendes un tipo de repositorio incorporado como CrudRepository. El runtime genera la implementación — incluyendo consultas derivadas de nombres de métodos como findByName — por lo que no hay código repetitivo de EntityManager, ni cadenas JPQL, ni métodos save/find escritos a mano.

Compartir 𝕏 🦋 in