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
'JPA' 카테고리의 다른 글
Q클래스 인스턴스 사용 방법 두가지 (0) | 2022.02.14 |
---|---|
JPAQueryFactory를 필드에서 제공하자(feat. 동시성 문제는 스프링이 해결) (0) | 2022.02.14 |
JPQL과 QueryDSL의 차이 (0) | 2022.02.14 |
JPA Auditing으로 생성시간/수정시간 자동화하기 (0) | 2022.02.14 |
JPA 로그에서 파라미터 값 보는 방법에 대한 연구 (0) | 2022.02.14 |