1. Facts(사실, 객관)
- JPA Dirty Check 방지하기 강의 및 정리
2. Feelings(느낌, 주관)
- JPA를 공부하다보면 Dirty Check를 많이 마주합니다.평소에 왜 JPA에서 update는 별다른 save()를 하지 않아도 반영이 되는가?! 고민을 해봤었는데 해당 부분을 속시원하게 알 수 있었습니다. 호기심이 있던 만큼 이전에 진작 검색했으면 더 빨리 학습하고 이유를 알 수 있었을 것입니다. 항상 원리를 알아두자라는 저의 마음속 외침을 다시한번 다짐합니다.
3. Findings (배운 점)
Dirty Check는 보통 JPA에서 초기의 저장되어 있는 것에 변화가 생긴 것을 확인하고 업데이트하는 "상태변경 감지"라고 한다. JPA는 내부적으로 Dirty Check를 통해 영속성 컨텍스트 1차 캐시에 있는 엔티티와 새롭게 영속성 컨텍스트에 반영된 엔티티가 다른지 비교하고 업데이트한다.
단, @Transactional로 해당 메서드를 묶어주어야, Dirty Check를 한다. 반대로 말하면, @Transactional이 제대로 적용되지 않으면 Dirty Check를 하지 않는다. 만약 대량의 데이터를 수정없이 조회한다고 가정하면, Dirty Check는 할 필요가 없다. 오히려 불필요한 과정을 거칠 뿐이다. 따라서 @Transactional(readOnly=true)를 하면 단순히 조회만 하므로 성능 이슈를 막을 수 있다.
- dirty check에 관하여
https://escapefromcoding.tistory.com/450
4. Affirmation (자기 선언)
나는 궁금한 내용은 사용법을 익히는데 그치지 않고 원리를 공부하는 사람이다.
'회고' 카테고리의 다른 글
TIL_211006 (0) | 2021.10.07 |
---|---|
TIL_211005 (0) | 2021.10.06 |
TIL_211001 (0) | 2021.10.05 |
TIL_210930 (0) | 2021.10.05 |
TIL_210929 (0) | 2021.10.05 |