Enterprise Średniozaawansowany

Zadeklaruj interfejs repozytorium i pozwól Jakarta Data automatycznie wygenerować implementację 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);
}
Widzisz problem z tym kodem? Daj nam znać.
🪄

Zero boilerplate

Zadeklaruj interfejs; kontener generuje pełną implementację DAO w czasie wdrożenia.

🔍

Zapytania wyprowadzane

Nazwy metod jak findByNameAndStatus są parsowane automatycznie — bez JPQL ani SQL.

🔌

Przenośny

Każde środowisko uruchomieniowe zgodne z Jakarta EE 11 dostarcza implementację repozytorium bez uzależnienia od dostawcy.

Stare podejście
EntityManager JPA
Nowoczesne podejście
Repozytorium Jakarta Data
Od JDK
21
Poziom trudności
Średniozaawansowany
JPA kontra Jakarta Data
Dostępne

Dostępne od Jakarta EE 11 / Java 21 (2024)

Jakarta Data (Jakarta EE 11) przekształca dostęp do danych w czystą deklarację interfejsu. Adnotujesz interfejs @Repository i rozszerzasz wbudowany typ repozytorium jak CrudRepository. Środowisko uruchomieniowe generuje implementację — łącznie z zapytaniami wyprowadzanymi z nazw metod jak findByName — więc nie ma boilerplate EntityManager, ciągów JPQL ani ręcznie pisanych metod save/find.