특정 엔티티를 영속 상태로 만들 때 연관된 엔티티도 함께 영속 상태로 만들고 싶으면
영속성 전이(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에서 엔티티를 저장할 때 연관된 모든 엔티티는 영속 상태여야 한다.
위 코드는 부모 엔티티를 영속 상태로 만들고 자식 엔티티도 각각 영속 상태로 만든다.
이럴 때 영속성 전이를 사용해 부모만 영속 상태로 만들면 연관된 자식까지 한 번에 영속 상태로 만들 수 있다.
영속성 전이(CASCADE) 활성화 적용
@Entitypublic class Parent{ ... @OneToMany(mappedBy = "parent", cascade = CascadeType.PERSIST) private List<Child> children = new ArrayList<>(); ...}