인프런 - 실전! 스프링 데이터 JPA
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
- JpaRepository 사용 시 , 자동으로 QueryByExample 사용 가능
- 테스트 - 도메인 자체가 검색조건이 됨
- 프리미티브 타입인 age 컬럼 제외
- ExampleMatcher: 특정 필드를 일치시키는 상세한 정보 제공, 재사용 가능
- Example: Probe와 ExampleMatcher로 구성, 쿼리를 생성하는데 사용
장점
- 동적 쿼리를 편리하게 처리
- 도메인 객체를 그대로 사용
- 데이터 저장소를 RDB에서 NOSQL로 변경해도 코드 변경이 없게 추상화 되어 있음
- 스프링 데이터 JPA JpaRepository 인터페이스에 이미 포함
단점
- 조인은 가능하지만 내부 조인(INNER JOIN)만 가능함 외부 조인(LEFT JOIN) 안됨
- 다음과 같은 중첩 제약조건 안됨 < firstname = ?0 or (firstname = ?1 and lastname = ?2) >
- 매칭 조건이 매우 단순함
결론
* 실무에서 사용하기에는 매칭 조건이 너무 단순하고, LEFT 조인이 안됨
* 실무에서는 QueryDSL을 사용하자
'Back-end > Spring Data Jpa' 카테고리의 다른 글
나머지 기능들 - 네이티브 쿼리 (0) | 2021.06.08 |
---|---|
나머지 기능들 - Projections (0) | 2021.06.08 |
나머지 기능들 - Specifications (명세) (0) | 2021.06.08 |
스프링 데이터 JPA 분석 (0) | 2021.06.08 |
확장 기능 - Web 확장 (0) | 2021.06.07 |