• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

준영속 상태와 1차캐시에 올리지 않은(persist 하지 않은) 상태의 차이

24.04.30 17:08 작성 조회수 59

0

detach 메서드를 통해 준영속 상태로 전환 한다고 하였는데,

강의에서는 준영속 상태란 더이상 영속성 컨텍스트에서 관리되지 않는 상태라고 하였는데 persist하기 전과 동일한 상태가 되는 것 인지 아니면 다른 차이가 있는지 궁금합니다.

답변 1

답변을 작성해보세요.

0

OMG님의 프로필

OMG

2024.04.30

안녕하세요. 황인호님, 공식 서포터즈 OMG입니다.

준영속 객체는 DB에 저장되었던 적이 있고, 식별자(id)도 할당되어있는 상태입니다 😀

반면 말씀하신 persist하기 전과 동일한 상태(비영속 상태)와는 차이가 있으며

아래 링크의 영한님 답변과 같이

new 상태인 객체와 준영속 상태의 객체는 merge()라는 명령에서 동작에 차이가 있습니다. new 상태인 객체는 merge()를 호출할 때 완전히 새로운 엔티티를 만듭니다. 반면에 준영속 상태의 엔티티는 DB에서 기존 엔티티를 찾고 그 값을 준영속 상태의 객체로 변경한 후에 반환합니다.

준영속 상태는 식별자가 서두에 답변드린 것처럼 식별자가 존재하여 DB에서 기존 엔티티를 찾을 수 있습니다.

 

다음 링크를 참고해주세요 😀

https://www.inflearn.com/questions/70393/book-%EA%B0%9D%EC%B2%B4%EA%B0%80-%EC%99%9C-%EC%A4%80%EC%98%81%EC%86%8D%EC%9D%B8%EA%B2%83%EC%9D%B8%EA%B0%80

감사합니다.