← 질문 목록
#326깊이 0

수정 메서드를 안 불렀는데 UPDATE가 나가는 이유는?

프레임워크심화트랜잭션

읽어 올 때 사본을 떠 두고, 반영하는 시점에 지금 값과 견줘 달라진 것만 내보내기 때문이다. 하이버네이트가 그렇게 한다.

  1. 1. 앱에서 관리자로: 글을 읽어 온다
  2. 2. 관리자에서 관리자로: 읽은 그대로 사본을 떠 둔다
  3. 3. 앱에서 관리자로: 제목을 바꾼다. 저장은 안 부른다
  4. 4. 관리자에서 DB로: 반영할 때 견줘 보고 UPDATE를 만든다

그래서 조회만 하고 값을 고쳐도 나간다. 반대로 아무것도 안 고쳤으면 조회만 하고 끝난다.

사본을 뜨는 만큼 메모리를 쓴다. 많은 행을 읽기만 할 때 읽기 전용으로 열면 사본을 안 뜨고 그만큼 가볍다.

관리 범위 밖의 객체는 이 일이 안 일어난다. 새로 만든 것이나 이미 떼어 낸 것은 직접 붙여 줘야 한다.

핵심 위험은 의도치 않은 수정이다. 조회해 온 것을 화면용으로 잠깐 고쳤을 뿐인데 DB까지 바뀐다.

추천 꼬리질문

0/300

적은 내용은 AI 학습에 쓰일 수 있습니다. 이름이나 연락처는 넣지 말아 주세요.

관련 질문

수정 메서드를 안 불렀는데 UPDATE가 나가는 이유는?