← 질문 목록
#326깊이 0
수정 메서드를 안 불렀는데 UPDATE가 나가는 이유는?
읽어 올 때 사본을 떠 두고, 반영하는 시점에 지금 값과 견줘 달라진 것만 내보내기 때문이다. 하이버네이트가 그렇게 한다.
- 1. 앱에서 관리자로: 글을 읽어 온다
- 2. 관리자에서 관리자로: 읽은 그대로 사본을 떠 둔다
- 3. 앱에서 관리자로: 제목을 바꾼다. 저장은 안 부른다
- 4. 관리자에서 DB로: 반영할 때 견줘 보고 UPDATE를 만든다
그래서 조회만 하고 값을 고쳐도 나간다. 반대로 아무것도 안 고쳤으면 조회만 하고 끝난다.
사본을 뜨는 만큼 메모리를 쓴다. 많은 행을 읽기만 할 때 읽기 전용으로 열면 사본을 안 뜨고 그만큼 가볍다.
관리 범위 밖의 객체는 이 일이 안 일어난다. 새로 만든 것이나 이미 떼어 낸 것은 직접 붙여 줘야 한다.
핵심 위험은 의도치 않은 수정이다. 조회해 온 것을 화면용으로 잠깐 고쳤을 뿐인데 DB까지 바뀐다.