개발 일지/Spring

[Spring JPA] CASCADE

미숫가루설탕많이 2023. 2. 27. 20:38

 Cascade란 '영속성전이'라는 의미로, Entity의 상태 변화를 전파시키는 attribute이다.

 

 만약 Cascade를 지정하지 않으면 상위 엔티티만 저장되고 하위 엔티티는 저장되지 않기 때문에, 상위 엔티티와 하위 엔티티 사이의 연관 관계를 다시 설정해줘야 한다.

 

 따라서 Cascade를 추가함으로써, 상위 엔티티를 영속화할 때, 관련된 엔티티도 함께 영속화되어 연관 관계를 다시 설정해주지 않아도 된다.

 

 @ManyToOne 등에 옵션으로 줄 수 있고 만약  entity의 상태 변화가 있으면 옵션으로 준 entity에도 상태 변화를 전이시킨다.

ex)

@ManyToOne(cascade = CascadeType.ALL)
private Member member;

 

 

 

 

CascadeType

 

  • ALL
    : 상위 엔티티에서 하위 엔티티로 모든 Cascade를 적용한다.

  • PERSIST
    : 엔티티를 영속화하면 하위 엔티티까지 영속성을 전달한다.

  • MERGE
    : 엔티티 상태를 merge하면 하위 엔티티도 함께 merge한다.

  • REMOVE
    : 엔티티를 제거하면 하위 엔티티도 함께 제거한다.

  • REFRESH
    : 상위 엔티티를 새로고침하면 연관된 하위 엔티티도 모두 새로고침한다.

  • DETACH
    : 영속성 컨텍스트에서 엔티티를 제거하면 연결된 하위 엔티티까지 영속성을 제거한다.

'개발 일지 > Spring' 카테고리의 다른 글

Failed to configure a DataSource 에러  (0) 2023.03.01
[Spring MVC] 트랜잭션  (0) 2023.02.28
[Spring JPA] 엔티티 간의 연관 관계 매핑  (0) 2023.02.24
[Spring] 엔티티 매핑  (0) 2023.02.23
[Spring MVC] 예외 처리  (0) 2023.02.19