궁금해서이 답변을 빨리 찾아야합니다. Google은별로 도움이되지 않습니다.
Java Persistence API에는 프레임 워크가 연관된 엔티티에 대한 작업을 계단식으로 작성하도록 지시하는 다음 속성이 있습니다.
CascadeType.PERSIST
CascadeType.DELETE
CascadeType.MERGE
CascadeType.REFRESH
처음 두 가지가 무엇을 의미하는지 압니다. B가있는 객체 A를 유지하면 B도 유지되고 A를 삭제하면 B도 삭제됩니다.
그러나 나는 다른 두 사람이 무엇을 성취하는지 이해할 수 없습니다. 도움?
답변
REFRESH는 “데이터베이스의 상태 변경 사항을 내 표현으로 가져 오기”를 의미합니다. 계단식 연결은 간단합니다. 이는 모든 연관된 엔티티가 새로 고쳐 짐을 의미합니다.
MERGE는 “저장”에 가까운 복잡한 것을 의미하지만 “이 분리 된 엔티티를 관리 상태로 되돌리고 상태 변경 사항을 저장”하는 것과 비슷합니다. 계단식이란 모든 관련 엔터티가 동일한 방식으로 푸시되고 다시 가져온 관리 엔터티 핸들에 .merge()
연결된 모든 관리 엔터티가 있음을 의미합니다.
답변
- ALL-소스 엔터티에서 수행되는 가능한 모든 계단식 작업이 연결 대상에 계단식으로 연결됩니다.
- MERGE-소스 엔터티가 병합 된 경우 병합은 연결 대상에 계단식으로 연결됩니다.
- PERSIST-소스 엔티티가 지속되는 경우 지속은 연관 대상에 계단식으로 연결됩니다.
- REFRESH-소스 엔터티가 새로 고쳐지면 새로 고침이 연결 대상에 계단식으로 적용됩니다.
- REMOVE-소스 엔티티가 제거되면 연관 대상도 제거됩니다.
나는 그것들을 이렇게 봅니다 (더 읽기 쉽습니다).
- MERGE-기존 개체의 경우 테이블의 기존 데이터를 내 개체의 데이터와 병합 합니다. (데이터베이스에 동기화)
- PERSIST-데이터베이스의 개체에서 새 레코드를 만듭니다.
- REFRESH-개체의 데이터를 새로 고칩니다. 동기화해야하는 데이터베이스가 변경되었을 수 있습니다. (데이터베이스에서 동기화)
- REMOVE-음, 삭제입니다.