본문 바로가기
JAVA/SpringBoot

[김영한] 자바 ORM 표준 JPA 프로그래밍 - 섹션 8. cascade, orphanRemoval

by 설총이 2023. 11. 1.
영속성 전이: CASCADE
고아객체: orphanRemoval

영속성 전이 + 고아 객체, 생명주기

(요약)
mappedBy를 사용하고 있는 곳에 cascade, orphanRemoval

1. cascade=CascadeType.PERSIST , ALL
=> 연관관계 주인인 엔티티만 persist해도 참조하는 객체들도 같이 영속성 컨텍스트에 저장된다. ( 같이 save가 된다 )

2. orphanRemoval = true
=> orphanRemoval를 선언하면 자바 컬렉션에서 remove를 했을 때 DB까지 delete 쿼리가 나간다.
(주의사항) 참조를 한 곳에서 사용할때만 사용해야한다.

 

영속성 전이 CASCADE

( 소스코드 예제 )

=> 일반적으로 사용할때는 영속성 컨텍스트에 넣으려면 각 객체에 대해 persist를 수행해주어야 한다.
오른쪽과 같이 부모객체 하나만 persist해도 부모 엔티티에 포함된 자식 엔티티들에 대해 영속성 컨텍스트에 들어가도록 사용하고 싶을 때 cascade를 사용한다.
(주의사항) mappedBy를 사용하고 있는 곳에 cascade 작성

 

orphanRemoval

(주의사항) orphanRemoval를 선언하면 자바소스에서 컬렉션에서 remove를 했는데 DB까지 delete 쿼리가 나간다.
즉, 참조가 하나인곳일때에만 사용해야한다. (ex. 게시글 - 첨부파일 게시글을 삭제하면 첨부파일도 자동으로 삭제)