🧬 영속성 전이 : CASCADE

특정 엔티티를 영속 상태로 만들 때 연관된 엔티티도 함께 영속 상태로 만들고 싶으면

영속성 전이(transitive persistence)

기능을 사용하면 된다.

JPA는

CASCASE

옵션으로 영속성 전이를 제공한다.

영속성 전이를 사용하면 부모 엔티티를 저장할 때 자식 엔티티도 함께 저장할 수 있다.

/*****부모 엔티티가 여러 자식 엔티티를 가짐*****///부모 엔티티@Entitypublic class parent{    @Id @GeneratedValue    private Long id;    @OneToMay(mappedBy = "parent")    private List<Child> children = new ArrayList<>();    ...}//자식 엔티티@Entitypublic class Child{    @Id @GeneratedValue    private Long id;    @ManyToOne    private Parent parent;    ...}
/*****부모 자식 저장*****/private static void saveNoCascade(EntityManager em){    //부모 저장    Parent parent = new Parent();    em.persist(parent);    //1번 자식 저장    Child child1 = new Child();    child1.setParent(parent);       //자식 -> 부모 연관관계 설정    parent.getChild().add(child1);  //부모 -> 자식    em.persist(child1);    //2번 자식 저장    Child child2 = new Child();    child2.setParent(parent);       //자식 -> 부모 연관관계 설정    parent.getChild().add(child2);  //부모 -> 자식    em.persist(child2);}

JPA에서 엔티티를 저장할 때 연관된 모든 엔티티는 영속 상태여야 한다.

위 코드는 부모 엔티티를 영속 상태로 만들고 자식 엔티티도 각각 영속 상태로 만든다.

이럴 때 영속성 전이를 사용해 부모만 영속 상태로 만들면 연관된 자식까지 한 번에 영속 상태로 만들 수 있다.

1. 영속성 전이 : 저장

영속성 전이(CASCADE) 활성화 적용

@Entitypublic class Parent{    ...    @OneToMany(mappedBy = "parent", cascade = CascadeType.PERSIST)    private List<Child> children = new ArrayList<>();    ...}