@Entity
public class Customer {
@OneToMany(cascadeType.ALL, orphanRemoval = true)
@JoinColumn(name = "customer_id")
private Set<Address> addresses;
}
1. CascadeType.ALL
Entity를 저장/수정/삭제 할 때 Addresses도 똑같이 저장/수정/삭제된다. 다만, Database레벨에서 이루어지는것이 아니라 JPA persistence provider에 의해서 이루어진다.
2. orphanRemoval = true
collection에서 Address가 삭제되는 경우 database에서도 address row를 삭제한다.
결과적으로 위와 같은 설정의 경우 Address객체의 lifeCycle은 Customer 객체에 의해서 결정되는 전형적인 composition 관계가 된다.