728x90
CASCADE
Parent Class
@OneToMany(mappedBy = "parent")
private List<Child> childrenList = new ArrayList<>();
public void addChild(Child child){
childrenList.add(child);
child.setParent(this);
}
Child Class
@ManyToOne
@JoinColumn(name = "PARENT_ID")
private Parent parent;
JpaMain Class
Child child1 = new Child();
Child child2 = new Child();
Parent parent = new Parent();
parent.addChild(child1);
parent.addChild(child2);
em.persist(child1);
em.persist(child2);
em.persist(parent);
persist 를 줄이고 Parent 중심으로해서 Child를 관리할 수 있었으면 좋겠다고 생각하면 CASCADE를 사용해야한다.
Parent Class
@OneToMany(mappedBy = "parent", cascade = CascadeType.ALL)
persist를 child를 해주지 않더라도 child들이 persist 된다.
주의사항
- 영속성 전이는 연관관계를 매핑하는 것과 아무 관련이 없음
- 엔티티를 영속화할 때 연관된 엔티티도 함께 영속화하는 편리함 을 제공할 뿐
CASCADE의 종류
- ALL: 모두 적용
- PERSIST: 영속
- REMOVE: 삭제
그 이외에.. / MERGE: 병합 / REFRESH: REFRESH / DETACH: DETACH
728x90
'JPA' 카테고리의 다른 글
JPA 기본 값 타입 (7) | 2024.08.28 |
---|---|
JPA 고아객체 (0) | 2024.08.25 |
JPA 즉시 로딩과 지연 로딩 (0) | 2024.08.25 |
JPA Proxy (0) | 2024.08.25 |
JPA 상속관계 맵핑 (0) | 2024.08.22 |