인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

java_oop님의 프로필 이미지
java_oop

작성한 질문수

스프링 데이터 JPA

스프링 데이터 JPA 2. JpaRepository.save() 메소드

Transient, Detached 상태 질문드립니다.

작성

·

261

1

엔티티의 @Id 프로퍼티를 찾는다. 해당 프로퍼티가 null이면 Transient 상태로

판단하고 id가 null이 아니면 Detached 상태로 판단한다.

@Id 프로퍼티가 단순히 null인지 여부에 따라서 Transient, Detached로 판단할 경우

ID 생성전략을 데이터베이스에 위임하지 않고 객체가 직접하는 경우에는 모두 Detached로 받아 들이는 건가요?

아니면 Id 생성 전략에 따라서 그 판단 기준도 다른건가요?

답변 2

0

백기선님의 프로필 이미지
백기선
지식공유자

그리고 그 전략은 강좌에서 설명드린대로 id 생성 전략에 따라 바뀌는게 아니라, 새로운 객체인지 판별하는 전략에 따라 달라집니다. 기본 전략이 id값의 유무인 것일뿐, 얼마든지 다른 판단 로직으로 바꿀 수도 있습니다.

0

백기선님의 프로필 이미지
백기선
지식공유자

스프링 데이터 JPA의 기본 전력에 따르면 그런 경우에도 모두 detached 상태로 생각한다는게 맞습니다. 그런데 그런 경우라 하더라도, detached 상태로 생각해서 merge를 할 때 DB에 없기 때문에 add가 발생합니다. 따라서 결국엔 같은 결과를 얻게 되는거죠. 좋은 질문 감사합니다.

java_oop님의 프로필 이미지
java_oop

작성한 질문수

질문하기