JPA kontra Jakarta Data
Zadeklaruj interfejs repozytorium i pozwól Jakarta Data automatycznie wygenerować implementację DAO.
@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);
}
@Repository
public interface Users extends CrudRepository<User, Long> {
List<User> findByName(String name);
}
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.
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.