Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- S&P500
- 무디스
- 오버라이딩
- FCF
- 잉여현금흐름
- mco
- 금리인상
- object
- 인플레이션
- Java
- 제태크
- 백준
- javascript
- 객체지향
- 다형성
- etf
- 기업분석
- 그리디 알고리즘
- 주린이
- 미국주식
- 배당성장
- StringBuffer
- 접근제어자
- 주식
- 자바
- 현금흐름표
- 알고리즘
- XLF
- 금리인하
- 프로그래머스
Archives
- Today
- Total
오늘의하루
[알쓸JPA] readOnly? DB는 OK, 영속성은? 본문
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");
}
'Spring > JPA' 카테고리의 다른 글
Comments