인프런 - 실전! 스프링 데이터 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을 사용하자

 

+ Recent posts