Cascade
엔티티의 상태 변화를 전파 시키는 옵션
public class Study{
private Long id;
private String name;
private Acoount owner
}
이렇게 Study 클래스가 있을 때 예를 들어서
영어 스터디에서 수학 스터디로 바뀌었다고 치면
Study 클래스 내부에 있는 owner 정보도 영어 -> 수학 스터디로 바뀌었다는 걸
알려줘야 하는데 이때 사용하는 엔티티의 상태 변화를 전파 시키는 옵션
엔티티의 상태는 4가지 상태
- Transient JPA가 모르는 상태
- Persistent JPA가 관리중인 상태 (1차캐시 ,Dirty Checking, Write Behind)
- Detached JPA가 더이상 관리 하지 않는 상태
- Removed JPA가 관리하긴 하지만 삭제하기로 한 상태
그럼 이러한 상태 변화를 토대로 Cascade 옵션에 대해서 알아보겠다.
일단 부모-자식 관계로 형성 돼 있는게 좋으니 Posts와 Comments로 양방향 맵핑을 해준다
지금 보면 posts만 저장하고 있다.
comments에 대한건 일체 저장하지 않고 있다.
DB에는 어떻게 들어가는지 확인해보자
posts는 저장했으니 잘 들어갔다.
그 다음 comment를 확인해보자
sessin으로 posts만 save 했으니 당연히 comments엔 값이 들어가지 않았다.
그러면 여기서 아까 배운 영속성을 바탕으로 상태가 변할때 같이 변하게 하면 어떻게 될까?
Posts가 저장될때 comments의 상태도 persistent가 되게 하기 위해 추가를 해줬다.
이제부턴 Posts의 상태가 transient에서 persistent로 변하면 comments도 같이
상태가 변하게 될 것이다.
추가하고 확인해보자.
값이 잘 들어갔다.
마찬가지로 이렇게 하면 Posts를 삭제하면 comments도 같이 삭제된다.
'Spring Data JPA' 카테고리의 다른 글
06 JPA 프로그래밍 - 스프링 Data JPA 원리 (0) | 2020.06.19 |
---|---|
05 JPA 프로그래밍 - Fetch , Query (0) | 2020.06.19 |
03. JPA프로그래밍 -엔티티 매핑 (0) | 2020.06.16 |
02. JPA프로그래밍 - 프로젝트 세팅 (0) | 2020.06.16 |
01. 관계형 데이터베이스, ORM (0) | 2020.06.16 |