JPA

[JPA] CASCADE

행복하개! 2020. 10. 22. 03:52

 

 

 

특정 엔티티를 영속 상태로 만들 때, 연관된 엔티티도 함께 영속 상태로 만들도 싶을 때 사용한다.

예를 들어, 부모 엔티티를 저장할 때 자식 엔티티도 함께 저장할때 사용한다. 

 

원래 기본은  

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