PostIT

[Java/JPA/Hibernate] JPA CascadeType 종류 본문

Spring/JPA(Hibernate)

[Java/JPA/Hibernate] JPA CascadeType 종류

shun10114 2017. 3. 14. 18:00

# JPA CascadeType 종류


- 최근 수정일 : 2017.04.18

## 1. 배경

- JPA 개인 프로젝트를 진행하던 중, 게시판과 파일, 댓글에서 @OneToMany - @ManyToOne의 관계에서 영속성 관리에서 문제가 발생되었으며, 영속성에서 참조된 객체를 지워주지 않았기 때문에 발생하였다. 더 정확한 내용은 알아볼 예정이다.



## 2. 내용

  • CascadeType.PERSIST
    엔티티를 영속화 할 때이 필드에 보유 된 엔티티도 유지합니다. EntityManager가 flush 중에 새로운 엔티티를 참조하는 필드를 찾고이 필드가 CascadeType.PERSIST를 사용하지 않으면 오류이므로이 Cascade 규칙의 자유로운 적용을 제안합니다.

  • CascadeType.MERGE
    엔티티 상태를 병합 할 때, 이 필드에 보유 된 엔티티도 병합하십시오.

  • CascadeType.REFRESH
    엔티티를 새로 고칠 때, 이 필드에 보유 된 엔티티도 새로 고칩니다.

  • CascadeType.REMOVE
    엔티티를 삭제할 때, 이 필드에 보유 된 엔티티도 삭제하십시오.

  • CascadeType.DETACH
    부모 엔티티가 detach()를 수행하게 되면, 연관된 엔티티도 detach() 상태가 되어 변경사항이 반영되지 않는다.

  • CascadeType.ALL
    모든 Cascade 적용


## 3. 참조

- http://stackoverflow.com/questions/13027214/jpa-manytoone-with-cascadetype-all


Comments