8.5 고아 객체
JPA는 부모 엔티티와 연관관계가 끊어진 자식 엔티티를 자동으로 삭제하는 기능을 제공.
부모 엔티티의 컬렉션에서 자식 엔티티의 참조만 제거하면 자식 엔티티가 자동으로 삭제.
고아 객체 제거 기능 설정
@Entity
public class Parent {
@Id @GeneratedValue
private Long id;
@OneToMany(mappedBy = "parent", orphanRemoval = true)
private List<Child> children = new ArrayList<Child>();
...
}
정리
- @OneToMany 연관에서 부모 엔티티의 컬렉션 등에서 자식 엔티티가 삭제될 때 참조가 끊어지므로 DB 레벨에서도 삭제.
- @OneToOne 연관에서 엔티티가 삭제될 때 연관된 엔티티가 참조가 끊어지므로 DB에서 삭제.
- 참조, 연결이 끊어진(Disconnected된) 엔티티를 같이 삭제하라는 의미.
- Owner 객체와 참조가 끊어진 객체들을 정리할 때 유용.