-
[알쓸JPA] readOnly? DB는 OK, 영속성은?Spring/JPA 2024. 11. 28. 17:56728x90반응형

readonly 상태라면 영속성도 readonly일까? 라는 궁금증이 들어 테스트 코드를 작성하면서 알게 된 알아둬도 정말 쓸데 없는 내용을 공유하려고 합니다.
Hibernate에서 readonly 힌트를 사용하면 해당 엔티티를 조회할 때 스냅샷을 만들지 않게 됩니다.
이로 인해 더티 체킹이 발생하지 않으며 결국 수정 쿼리가 DB에 나가지 않게 됩니다.
- 즉, readonly는 DB 쿼리 측면에서 수정할 수 없도록 만들어줍니다.
그런데 readonly 상태에서도 엔티티의 필드를 수정해봤더니 수정 쿼리는 발생하지 않지만 1차 캐시에는 수정된 값이 반영되는 걸 알게 되었습니다.
@Test @Transactional(readOnly = true) void queryHint() { // given Member member1 = memberRepository.save(new Member("member1", 10, null)); entityManager.flush(); entityManager.clear(); // when Member findMember = memberRepository.findReadOnlyByUsername(member1.getUsername()); findMember.setUsername("member2"); entityManager.flush(); // then Member result = memberRepository.findById(member1.getId()).get(); assertThat(result.getUsername()).isEqualTo("member2"); }728x90반응형'Spring > JPA' 카테고리의 다른 글