본문 바로가기
공부/Spring

JPA Hint를 통해 성능최적화를 할까?

by JERO__ 2022. 8. 25.

JPA Hint이 뭘까?

JPA 쿼리 힌트이다. SQL 힌트가 아닌 JPA 구현체에게 제공되는 힌트이다.

기능은?

  • readOnly를 적용하여 성능 최적화를 할 수 있다.
  • 하지만, 진짜 진짜 중요한 트래픽이 많은 곳에서만 사용하자. 성능테스트를 해보고 중요할 때에만 사용하자!
    • 다음과 같은 예시에서, member를 찾은 이후 update를 하더라도 쿼리가 실행되지 않는다. 또한, 변경감지가 발생하지 않는다(readOnly)
    • 예상하지 못한 버그가 발생할 수 있다.
@QueryHints(value = @QueryHint(name = "org.hibernate.readOnly", value ="true"))
Member findReadOnlyByUsername(String username);

쿼리 힌트를 Page에도 추가해보자!

@QueryHints(value = { @QueryHint(name = "org.hibernate.readOnly", value = "true")},
forCounting = true)Page<Member> findByUsername(String name, Pagable pageable);

결론

성능테스트를 해보고 중요할 때에만 사용하자!

 

댓글