skarltjr / Memory_Write_Record

나의 모든 학습 기록
0 stars 0 forks source link

jpa cascade옵션 #112

Open skarltjr opened 2 years ago

skarltjr commented 2 years ago

cascade란

영속성 전이
엔티티의 상태 변화를 전파시키는 옵션
만약 현재 엔티티와 연관된 엔티티가 있다면 현재 엔티티의 상태변화가 연관 엔티티에도 전파되도록 하는 옵션
디폴트로는 아무것도 전파하지않는다.

엔티티의 4가지 상태

  1. transient

    nothing. 데이터베이스와 매핑된것이 아무것도 없다
  2. persistent

    jpa가 관리하는 상태 
    영속성 컨테이너에 등록되어있다.
    그렇기때문에 변경감지등의 기능 가능
  3. detached

    이전에 jpa가 관리했지만 더 이상 관리하지않는 상태
  4. removed

    jpa가 관리하는 상태이긴 하지만 실제 commit이 일어날 때 삭제가 일어난다.

cascade 적용

연관관계에서 사용된다. parent - child 관계에 있는 도메인에 적용할 수 있다.

pos 1 : N comment가 있다고 해보자

스크린샷 2022-05-18 오후 3 54 10

1. persist 옵션
- post가 저장될 때 연관된 comment도 모두 persist 상태가된다

2. remove 옵션 
- post가 삭제될 때 연관된 모든 comment도 삭제된다.

3. all 옵션
- 일반적으로 위 두가지가 합쳐진 all 옵션을 사용한다