BACKEND/Spring
SpringBoot JPA CASCADE 예제
송이 🫧
2022. 1. 17. 00:33
@OneToMany(mappedBy = "parent",cascade = CascadeType.ALL) //childList까지 함께 persit 날려주겠다는 얘기
private List<Child> childList = new ArrayList<>();
위와 같이 특정 필드에 cascade 설정을 할 경우 parent를 persist할 때 childList도 함께 persist 된다.
Ex)
Child child1 = new Child();
Child child2 = new Child();
Parent parent = new Parent();
parent.addChild(child1);
parent.addChild(child2);
em.persist(parent);
위와 같이 parent만 persist 해주어도 그 child도 전부 persist 된다.
CascadeType.All -> 모든 life cycle를 같이 함
CascadeType.PERSIST -> 추가만 같이하고 나머지는 따로
CascadeType.All & orphanRemoval=True 인 경우
=> child의 생명주기를 parent가 관리하게 된다.
단, 이와 같은 사용은 반드시 child가 parent하고만 연관관계가 존재할 때 사용한다.