Spring 기초 정리 - Cascade (영속성 전이)

Zyoon·2025년 7월 1일

Spring 기초정리

목록 보기
18/18
post-thumbnail

📘엔티티의 직렬(cascade) 관계


📍Cascade (영속성 전이)

  • 쉽게 말해서 부모가 하면 자식도 따라하게 만드는 설정.
  • 즉, 부모 엔티티에 어떤 작업을 하면, 자식 엔티티도 자동으로 같이 처리되게 해주는 기능

📍예시로 보기

@Entity
public class Parent {
		//부모 객체에서 cascade 설정
    @OneToMany(mappedBy = "parent", cascade = CascadeType.PERSIST)
    private List<Child> children = new ArrayList<>();
}

@Entity
public class Child {
    @ManyToOne
    private Parent parent;
Parent parent = new Parent();
Child child = new Child();

// 관계 설정
child.setParent(parent);
parent.getChildren().add(child);

// 부모만 저장 시
em.persist(parent);

// 자식도 자동으로 같이 저장
  • PERSIST 덕분에 em.persist(child)를 따로 안 해도 된다.

📍주요 CascadeType 종류

타입설명
PERSIST부모 저장 시 자식도 저장
MERGE부모 병합 시 자식도 병합
REMOVE부모 삭제 시 자식도 삭제
DETACH부모 detach 시 자식도 detach
REFRESH부모 DB 상태 새로고침 시 자식도 새로고침
ALL위 모든 옵션을 포함 (전이 전체 적용)

📍정리

  • cascade부모와 자식간의 직렬관계
  • 부모만 저장해도 → 자식도 자동 저장됨 (PERSIST)
  • 부모만 삭제해도 → 자식도 같이 삭제됨 (REMOVE)

📍주의사항

  • 삭제 전이(REMOVE)는 실수로 부모를 삭제하면 자식까지 같이 사라질 수 있으니 조심해서 사용.
  • 양방향 연관관계일 때는 child.setParent(parent) 등으로 연관관계 주인 쪽에도 값을 세팅해야 반영
  • 불필요한 전이 설정은 데이터 손실 위험 있으니 신중하게 사용해야 함
profile
기어 올라가는 백엔드 개발

0개의 댓글