앞서 영속성 컨텍스트에 대해 정리하고 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 관계 일때 만 가능하다.
'JPA' 카테고리의 다른 글
[Jpa] Deprecated 된 getById() 대안 getReferenceById() (0) | 2022.08.02 |
---|---|
[Jpa] Dirty Checking (0) | 2022.07.19 |
[Jpa] Projections (0) | 2022.07.18 |
[Spring JPA] 트랜잭션은 언체크, 체크 예외에 대해 어떻게 커밋과 롤백을 처리할까? (1) | 2022.05.18 |
[Spring JPA] N + 1의 문제점이 무엇이고 어떻게 해결 해야할까? (0) | 2022.05.15 |
[Spring JPA] 프록시 객체는 어떻게 동작할까? (0) | 2022.05.12 |
[Spring JPA] 객체지향의 상속관계 매핑은 어떤 전략을 사용할까? (0) | 2022.05.12 |
[Spring JPA] 객체의 연관관계는 어떻게 관계를 맺는것이 좋을까? (0) | 2022.05.10 |