영속성 전이: 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. 게시글 - 첨부파일 게시글을 삭제하면 첨부파일도 자동으로 삭제)
'JAVA > SpringBoot' 카테고리의 다른 글
[김영한] 자바 ORM 표준 JPA 프로그래밍 - 섹션 9. @ElementCollection, @CollectionTable (0) | 2023.11.06 |
---|---|
[김영한] 자바 ORM 표준 JPA 프로그래밍 - 섹션 9. @Embedable, @Embedded, @AttributeOverrides (0) | 2023.11.05 |
[김영한] 자바 ORM 표준 JPA 프로그래밍 - 섹션 8. 즉시로딩과 지연로딩 (0) | 2023.10.31 |
[김영한] 자바 ORM 표준 JPA 프로그래밍 - 섹션 8. 프록시 (0) | 2023.10.31 |
[김영한] 자바 ORM 표준 JPA 프로그래밍 - 섹션 7. @MappedSuperclass (0) | 2023.10.26 |