Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Archives
Today
Total
관리 메뉴

개발 기록지

[JPA] 영속성 전이 : CASCADE 본문

JPA

[JPA] 영속성 전이 : CASCADE

hyeonw777 2021. 7. 11. 15:59

영속성 전이란?

특정 엔티티를 영속 상태로 만들때 연관된 엔티티도 영속상태로 만들고 싶을때 영속성 전이를 사용하면 된다. JPA는 CASCADE 옵션으로 영속성 전이를 제공한다. 예를 들어보자. 게시판과 댓글이 서로 연관된 엔티티일때 게시판이 삭제되면 해당 게시판에 달린 댓글 또한 삭제되어야한다. 이 때 영속성 전이를 사용하면 게시판을 삭제할 때 해당 게시판에 댓글 또한 삭제가 된다. 아래 예시를 보면서 이해해보자

아래 코드는 간단한 Post 엔티티와 Comment 엔티티이다.

Post 엔티티와 Comment 엔티티

 

위의 코드는 하나의 게시판에 댓글 두 개를 등록하는 코드이다. 코드를 보면 댓글과 게시판에 서로 연관관계를 설정해 주었다. 그렇다면 위 코드를 보고 어떻게 쿼리가 날아갈지 예상해보자. 당연히 INSERT문은 한번밖에 날아가지 않을 것이다. 왜냐하면 영속성 컨텍스트에 저장한 객체는 Post밖에 없기 때문이다. 그렇다면 이제 CASCADE 설정을 해보자

 

CASCADE 설정을 한후 쿼리가 날아간 모습이다. 이제는 Post 객체만 영속화되면 Comment 객체도 같이 영속화되는 모습을 볼 수 있다. 이처럼 영속성 전이는 엔티티를 영속화할 때 연관된 엔티티도 같이 영속화하는 편리함을 제공한다.

CASCADE 종류

  • CascadeType.ALL : 모든 변경에 전이
  • CascadeType.PERSIST : 부모저장시 자식도 저장
  • CascadeType.MERGE : 부모 MERGE -> 자식도 MERGE 
  • CascadeType.REMOVE : 부모삭제시 자식도 삭제
  • CascadeType.REFRESH : 부모 REFRESH-> 자식도 REFRESH 
  • CascadeType.DETACH : 부모가 DETACH -> 자식도 DETACH

 

'JPA' 카테고리의 다른 글

[JPA] 즉시로딩과 지연로딩 프록시의 이해  (0) 2021.07.06
Comments