카테고리 없음
변경감지 (더티체킹)
dev_0hoon
2024. 1. 30. 15:27
Member member = entityManager.find(Member.class, 150L);
member.setName("zzzzzz");
ts.commit();
Hibernate:
/* update
helloJpa.Member */ update
member
set
name=?
where
id=?
업데이트 쿼리를 날린 적이 없는데도 업데이트가 되어버린다. 그저 값을 set했을 뿐인데?

1차 캐시안에 스냅샷이라는 것이 있다. 이 스냅샷이란 값을 딱 읽어온 그 시점을 떠놓은 것이다. 그런 상태에서 entity가 변경 될 경우 비교를 한 뒤에 -> 다를 경우 쓰기 지연 SQL 저장소에 updateSql을 저장하며 커밋하는 시점에 업데이트 쿼리를 날린다.