1. 영속성 전이 CASCADE

ex) 부모 엔티티를 저장할 때 자식 엔티티도 함께 저장

Untitled

‼️ 연관관계나 지연로딩, 즉시로딩과 관계 없음!!!!!!

@Entity
public class Parent {

	//...

	@OneToMany(mappedBy="parent", **cascade=CascadeType.ALL**)
	private List<Child> childList = new ArrayList<>();
	
	public void addChild(Child child) {
		childList.add(child);
		child.setParant(this);
	}
}

@Entity
public class Child {

	//...
	
	//양방향 주인
	@ManyToOne
	@JoinColumn(name = "parent_id")
	private Parent parent

}

//..
try {
	Child child1 = new Child();
	Child child2 = new Child();

	Parent parent = new Parent();
	parent.addChild(child1);
	parent.addChild(child2); 

	em.persist(parent);
	em.persist(child1); // 귀찮.. **cascade 설정 해주면 삭제가능**
	em.persist(child2); // 귀찮... **cascade 설정 해주면 삭제가능**

}

위 같이 구현하면 매번 child1 , child2 를 persist 해줘야 한다. 귀찮은 부분을 삭제하여도 parent의 , =CascadeType.ALL) 옵션 때문에

귀찮은 부분은 제외하여도 자동으로 insert가 된다. ( Parent 객체에 addChild 해주었고, 영속성을 전이해주었기 때문)

cascade 해준것들도 같이 persist 해줄 거라고 생각하면 된다.

Untitled