고아 객체 설정 (orphanRemoval)

박우진·2025년 3월 1일

JAVA Spring

목록 보기
3/4

의문

Profile을 추가할 때 기존 데이터가 남아야 할까? 삭제되어야 할까?

1. 새로운 Profile을 추가할 때 기존 Profile을 유지해야 한다면?

  • orphanRemoval = false 또는 OneToMany 구조가 적합할 수 있음.
  • 기존 데이터를 유지하면서 추가적인 Profile을 관리해야 함.
  • 예: 버전 관리(시즌별 프로필), 과거 이력 저장 등
  • 주의: 기존 Profile을 지우고 싶다면, 명시적으로 제거해야 함.

2. 새로운 Profile을 추가할 때 기존 Profile이 삭제되어야 한다면?

  • orphanRemoval = true가 필요함.
  • 기존 Profile이 새로운 Profile과 교체될 때, 기존 Profile이 자동 삭제됨.
  • 예: 유저의 단 하나의 프로필이 유지되는 경우 (SNS 프로필 변경 등)

결론

Profile 추가 시 orphanRemoval이 중요한 이유

경우orphanRemoval = falseorphanRemoval = true
기존 Profile을 유지하면서 새로운 Profile 추가✅ 가능 (직장 이력, 시즌별 프로필)❌ 기존 Profile이 자동 삭제됨
새로운 Profile이 추가되면 기존 Profile을 삭제❌ 기존 Profile이 그대로 남음✅ 기존 Profile 자동 삭제
명확하게 삭제할 필요 없이 관리하고 싶음✅ 명시적으로 profiles.remove(oldProfile); 해야 함✅ 자동 삭제됨
  • 즉, Profile을 "추가"한다고 해서 무조건 orphanRemoval이 필요하지는 않음.
  • 기존 데이터를 "삭제"할 필요가 있다면, orphanRemoval = true

0개의 댓글