JPA
쿼리 힌트란? (feat. 예제)
쿠카이든
2022. 2. 14. 12:09
728x90
- JPA Hint
- SQL 힌트가 아니라 JPA 구현체에게 제공하는 힌트
- Hint를 사용하여 영속성 컨텍스트에 저장되는 것을 방지해 메모리 낭비를 막고 혹시 모를 변경사항에 대해 업데이트되지 않도록 할 수 있습니다.
- 쿼리 힌트 사용 예
@QueryHints(value = @QueryHint(name = "org.hibernate.readOnly", value = "true"))
Member findReadOnlyByUsername(String username);
- 쿼리 힌트 사용 확인 (read only 속성 때문에 업데이트가 실행이 안됨)
@Test
@Transactional
public void queryHint() throws Exception {
//given
memberRepository.save(new Member("member1", 10));
em.flush();
em.clear();
//when
Member member = memberRepository.findReadOnlyByUsername("member1");
member.setUsername("member2");
//then
em.flush(); //Update Query 실행X
}
- 결론 - 쿼리 힌트의 readOnly 기능은 다음 두가지 상황에서 이점이 있습니다.
- 단순 조회인데 부하가 심한 API이거나 상당히 빈번하게 호출되는 경우
- 성능테스트를 결과를 확인한 뒤 취할 수 있는 이점이 있는 경우
728x90