Enterprise 중급

리포지토리 인터페이스를 선언하고 Jakarta Data가 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);
}
이 코드에 문제가 있나요? 알려주세요.
��

보일러플레이트 제로

인터페이스를 선언합니다; 컨테이너가 배포 시점에 전체 DAO 구현을 생성합니다.

🔍

파생 쿼리

findByNameAndStatus 같은 메서드 이름이 자동으로 파싱됩니다 — JPQL이나 SQL이 필요 없습니다.

🔌

이식 가능

모든 Jakarta EE 11 호환 런타임이 벤더 종속성 없이 리포지토리 구현을 제공합니다.

이전 방식
JPA EntityManager
모던 방식
Jakarta Data 리포지토리
JDK 버전
21
난이도
중급
JPA 대 Jakarta Data
사용 가능

Jakarta EE 11 / Java 21 (2024) 이후 사용 가능

Jakarta Data(Jakarta EE 11)는 데이터 접근을 순수 인터페이스로 만듭니다. 메서드 이름이 쿼리가 되고, 컨테이너가 구현을 생성하며, 수동 EntityManager 코드가 필요 없습니다.

공유 𝕏 🦋 in