JPA. CASCADE와 고아객체

무지성개발자·2024년 2월 19일
0

JPA

목록 보기
9/12

CASCADE

cascade는 영속성 전이라고 하며 부모 엔티티와 자식 엔티티가 연관관계를 맺고 있을 때, 부모 엔티티를 영속성 컨텍스트로 관리할 때 자식 엔티티도 부모 엔티티와 같은 라이플 사이클로 관리 할 지 결정하는 것 이다.

연관관계 매핑과는 아무런 관련이 없으며 부모-자식 관계를 관리할 때 좀 더 편하게 관리 할 수 있는 기능만 제공하는 것.

사용방법

@OneToMany(cascade = CascadeType.ALL)
  • 영속성 전이의 종류는 아래와 같으며 ALL, PERSIST를 많이 사용.
    • CascadeType.PERSIST : 영속만 적용
    • CascadeType.REMOVE : 삭제만 적용
    • CascadeType.MERGE : 병합만 적용
    • CascadeType.REFRESH : 리프레쉬만 적용
    • CascadeType.DETACH : DETACH만 적용
    • CascadeType.ALL : 모든 경우 다 적용

주의 사항

영속성 전이는 자식이 하나의 부모에만 종속 되어 있는 경우에만 사용 해야한다.

여러 부모를 가지고 있는 자식이 한 개의 부모를 삭제한다고 같이 삭제 되면 안 된 다는 것 이다. 때문에 영속성 전이는 확실한 이해가 없으면 안쓰는 것도 방법이다.

고아객체

고아객체는 부모와 연결이 끊어진 자식 객체를 말한다. 이 고아객체는 혼자 남아서 할 수 있는게 없으므로 부모 객체가 지워지면 고아객체를 자동 삭제 할 수 있다.

고아 객체 제거

@OneToMany(orphanRemoval = true)

위 처럼 설정하면 em.remove(부모 엔티티)시 자식 엔티티도 자동 삭제 된다.

주의사항

고아객체 제거도 영속전 전이 처럼 참조하는 곳이 하나 일 때 사용해야한다. 여러 부모를 가진 자식을 함부로 삭제하면 안된다는 말이다.

때문에 @OneToXXX에서만 사용 가능하다.

profile
no-intelli 개발자 입니다. 그래도 intellij는 씁니다.

0개의 댓글