특정 엔티티를 영속 상태로 만들 때, 연관된 엔티티도 함께 영속 상태로 만들도 싶을 때 사용한다.
예를 들어, 부모 엔티티를 저장할 때 자식 엔티티도 함께 저장할때 사용한다.
원래 기본은
Child child1 = new Child();
Child child2 = new Child();
Parent parent = new Parent();
parent.addChild(child1);
parent.addChild(child2);
em.persist(parent);
em.persist(child1);
em.persist(child2);
이렇게 child1, 2를 다 저장해야한다. 근데,
@Entity
public class Parent {
@Id
@GeneratedValue
private Long id;
private String username;
@OneToMany(mappedBy = "parent", cascade = CascadeType.AL)
private List<Child> childList = new ArrayList<>();
}
CascadeType.ALL옵션을 주면,
Child child1 = new Child();
Child child2 = new Child();
Parent parent = new Parent();
parent.addChild(child1);
parent.addChild(child2);
em.persist(parent);
이렇게 할 수 있다.
근데 아무때나 사용하면 안되고 이렇게 딱 관계가 정해진 경우에만 사용해야함.
영속성 전이는 연관관계를 매핑하는 것과 아무 관련이 없다. 엔티티를 영속화할 때 연관된 엔티티도 함께 영속화하는 편리함 을 제공할 뿐이다.
'JPA' 카테고리의 다른 글
[JPA] 임베디드 타입 (0) | 2020.10.23 |
---|---|
[JPA] orphanRemoval (0) | 2020.10.22 |
[JPA] 지연로딩 (0) | 2020.10.22 |
[JPA] 프록시 (0) | 2020.10.22 |
[JPA] @MappedSuperclass (0) | 2020.10.20 |