영속성 전이(CASCADE)
영속성 전이(CASCADE)
"CASCADE : 폭포, 폭포처럼 흐르다" 라는 사전적 의미를 바탕으로 엔티티의 상태를 변경할 때 해당 엔티티와 연관된 엔티티의 상태 변화를 전파시키는 옵션
- 부모는 One에 해당하는 Entity
- 자식은 Many에 해당하는 Entity
- 부모 Entity가 존재해야 자식 Entity가 부모를 참조하며 생성될 수 있음
CASCADE 종류
| CASCADE | 설명 |
|---|
| PERSIST | 부모가 영속화될 때 자식도 영속화 |
| MERGE | 부모가 병합될 때 자식도 병합 |
| REMOVE | 부모가 삭제될 때 자식도 삭제 |
| REFRESH | 부모가 refresh되면 자식도 refresh |
| DETACH | 부모가 detach 되면 자식도 detach |
| ALL | 부모의 상태 변화를 자식에게 모두 전이 |
주문 영속성 전이
- 부모인 Order Entity가 저장될 때, 자식인 OrderItem 또한 저장되는 영속성 전이

고아객체(ORPHAN)
고아객체(ORPHAN)
부모 엔티티와 연관 관계가 끊어진 자식 엔티티
- 자식의 엔티티를 다른 엔티티가 참조하고 있다면 제거 X
고아객체 제거
- 부모 Entity에 ORPHANREMOVAL = true 설정
CASCADE.REMOVE VS 고아객체 제거
- CASCADE.REMOVE - 부모 Entity가 삭제될 때 같이 삭제되는 것
- 고아객체 제거 - 부모 Entity와의 연관관계가 끊어질 때 삭제되는 것