출처: 자바 ORM 표준 JPA 프로그래밍
영속성 전이
영속성 전이(cascade)를 사용하면 말그대로 영속성을 전이시킬수 있다.
A 엔티티를 영속화하면, 그에 연관된 B 엔티티도 자동으로 영속화 하는것이 가능해진다.
예시) @OneToMany(mappedBy="parent", cascade=CascadeType.PERSIST)
종류도 다양하다.
CASCADE의 종류
• ALL: 모두 적용
• PERSIST: 영속
• REMOVE: 삭제
• MERGE: 병합
• REFRESH: REFRESH
• DETACH: DETACH
오해하면 안되는점은, 이건 연관관계 매핑과 아무상관이 없다.
그저 편하라고 있는 기능을 제공해줄 뿐이다.
고아 객체
부모 엔티티와 연관관계가 끊어진 자식 엔티티를 고아 객체라고 한다. (말넘심..)
orphanRemoval = true 로 설정하면, 위의 경우를 자동 삭제한다.
-주의사항-
이건 좀 위험하다.
생각을 해보면, 엔티티를 자동으로 삭제해 버리는거니까, 엄청난 장애를 일으킬수 있다.
그러므로
참조하는 곳이 하나일때(특정 엔티티가 개인소유할때) 만
사용해야한다.
또 @OneToOne, @OneToMany만 가능하다
영속성 전이 + 고아 객체 = 생명주기 관리
CascadeType.ALL + orphanRemovel=true
이렇게 설정하면 부모가 자식 엔티티의 생명주기를 관리할수 있다.
CascadeType.ALL 이거만 해도 될것같지만,
삭제, 변경 등은 같이 동작하지만 고아객체를 자동으로 없어지게 하진 않기때문이다.
'Dev > JPA' 카테고리의 다른 글
[강의정리] N+1 문제와 JPQL fetch join을 통한 해결 (0) | 2021.05.21 |
---|---|
[강의정리] 값 타입 (0) | 2021.05.21 |
[강의정리] 프록시와 연관관계 관리 (0) | 2021.05.18 |
[강의정리] 상속관계 매핑 (0) | 2021.05.18 |
[강의정리] 연관관계 매핑 (0) | 2021.05.17 |