Spring Data Jpa 구현체 나머지 기능2
Query By Example
- 예시
( Inner Join은 가능하지만 Outer Join (Left Join) 이 해결이 안된다.)
(사용하기 애매한 기술)
-
장점
- 동적 쿼리를 편리하게 처리
- 도메인 객체를 그대로 사용한다
- 데이터 저장소를 RDB에서 NOSQL로 변경해도 코드 변경이 없게 추상화 되어있다.
-
정리
- LEFT 조인이 안된다.
- 실무에서는 QueryDSL을 사용해야한다.
Projections
실무에서 종종 도움될 상황이 있다.
- 엔티티 대신에 DTO를 편리하게 조회할 때 사용
- 전체 엔티티가 아니라 만약 하나의 회원 이름만 조회하고 싶을 경우
- 정리
- 실무의 복잡한 쿼리를 해결하기에는 한계가 있다.
- 실무에서는 단순할때만 사용하고, 조금만 복잡해지면 QueryDSL을 사용해야한다.
네이티브 쿼리
- 가급적 네이티브 쿼리는 사용하지 않는게 좋음, 정말 어쩔수 없을때 사용
- 최근에 나온 궁극의 방법 -> 스프링 데이터 Projections 활용
- 예시
(지정한 쿼리가 그대로 로그에 찍힌다.)
(제약 사항이 많이 있다.
ex : Sort 파라미터를 통한 정렬이 정상 동작하지 않을수있다. 반환타입이 지원이 많이 안된다, 동적 쿼리가 불가능)
- 정리
: 네이티브 SQL을 DTO로 조회할 때는 JdbcTemplate or myBatis를 권장한다.