728x90
JPA


- Entity에 NamedQuery를 작성한 뒤, JPQL에서 namedQuery를 호출할 수 있다.
- 네임드 쿼리는 실무에서 잘 사용하지는 않지만 막강한 기능 중 하나인 애플리케이션 로딩 시점에 쿼리를 파싱 하여 오류를 잡아줄 수 있는 기능이 있다.
SpringDataJpa


- @Query 를 생략하고 메서드 이름만으로 Named 쿼리를 호출할 수 있다.
- 스프링 데이터 JPA는 선언한 "도메인 클래스 + .(점) + 메서드 이름"으로 Named 쿼리를 찾아서 실행
- 만약 실행할 Named 쿼리가 없으면 메서드 이름으로 쿼리 생성 전략을 사용한다.
- 필요하면 전략을 변경할 수 있지만 권장하지 않는다.
참고
Spring Data JPA - Reference Documentation
Example 109. Using @Transactional at query methods @Transactional(readOnly = true) interface UserRepository extends JpaRepository { List findByLastname(String lastname); @Modifying @Transactional @Query("delete from User u where u.active = false") void del
docs.spring.io
스프링 데이터 JPA를 사용하면 실무에서 Named Query를 직접 등록해서 사용하는 일은 드물다. 대신 @Query를 사용해서 리파지토리 메소드에 쿼리를 직접 정의한다
728x90
'실전! 스프링 데이터 JPA' 카테고리의 다른 글
| Ch03. 쿼리 메소드 기능 - 파라미터 바인딩 (0) | 2021.12.26 |
|---|---|
| Ch03. 쿼리 메소드 기능 - @Query, 리포지토리 메소드에 쿼리 정의하기 (0) | 2021.12.26 |
| Ch03. 쿼리 메소드 기능 - 메소드 이름으로 쿼리 생성 (0) | 2021.12.26 |
| Ch02. 공통 인터페이스 기능 - 공통 인터페이스 분석 (0) | 2021.12.25 |
| Ch02. 공통 인터페이스 기능 - 공통 인터페이스 설정 (0) | 2021.12.25 |