JPA

[JPA 20] 영속성 전이(CASCADE)

snowkit 2022. 3. 12. 13:32

CASCADE

  • Entity의 영속 상태를 변경할 때, 연관 Entity도 같이 변경하고 싶은 경우 사용

사용 조건

  • 다음 조건을 만족하지 않으면 사용하면 안됨
    • 연관 Entity를 사용하는 곳이 현재 Entity 밖에 없어야 함(다른 테이블에서 사용하면 안됨)
    • 현재 Entity와 연관 Entity의 Lifecycle이 같아야 함(생성, 수정, 삭제 등)

사용 방법

@Entity
public class Member {
    /* ... */
    @ManyToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "team_id")
    private Team team;
}
  • 연관관계 어노테이션의 cascade 엘리먼트에 CascadeType 적용
    • 연관관계의 참조측(mappedBy)도 사용 가능

CASCADE 종류

CascadeType 상태 변경
PERSIST 영속
REMOVE 삭제
MERGE 병합
REFRESH REFRESH
DETACH DETACH