JPA
[Spring JPA] CASCADE 는 무엇일까?
kkkkkkkkkkkk
2022. 5. 15. 17:15
앞서 영속성 컨텍스트에 대해 정리하고 fetch의 대해 정리 해보았다. CASCADE 란 종속이란 단어인데 DB 쿼리 에서도 보았을 것이다.
JPA에서는 A라는 엔티티에 연관된 엔티티들도 영속성 상태로 만들고 싶을때 사용하는 속성이다.
@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
CascadeType

타입에서도 여러가지가 있다. 주로 ALL, PERSIST 을 설정하여 사용한다.
주의!
속성을 지정할땐 연관된 엔티티의 소유자가 단 하나일때 만 사용해야한다.
소유자가 여러개이면 한쪽에서 변경할 시 다른 한쪽에서도 변경된 값으로 영향을 받으므로 사용하지 않는 것을 권장한다.
고아 객체 관리
말 그대로 풀어서 설명해보면 소유자가 없는 객체 즉, 연관관계가 끊어진 엔티티를 말한다.
연관관계가 끊어진 객체를 어떻게 관리 할 것인지 설정 하는 속성이 있다.
@OneToMany(orphanRemoval = true)
기본 속성값이 false 이며 true 로 설정하면 연관객체의 생명주기를 연관관계의 주인이 가지게 된다.
연관관계가 끊어지면 delete query 가 동작하게 된다.
주의!
이 설정도 소유자가 하나일때 만 사용해야한다.
1 : 1 관계, 1 : N 관계 일때 만 가능하다.