[java] REFRESH 및 MERGE는 데이터베이스 측면에서 무엇을 의미합니까?

궁금해서이 답변을 빨리 찾아야합니다. Google은별로 도움이되지 않습니다.

Java Persistence API에는 프레임 워크가 연관된 엔티티에 대한 작업을 계단식으로 작성하도록 지시하는 다음 속성이 있습니다.

CascadeType.PERSIST
CascadeType.DELETE
CascadeType.MERGE
CascadeType.REFRESH

처음 두 가지가 무엇을 의미하는지 압니다. B가있는 객체 A를 유지하면 B도 유지되고 A를 삭제하면 B도 삭제됩니다.

그러나 나는 다른 두 사람이 무엇을 성취하는지 이해할 수 없습니다. 도움?



답변

REFRESH는 “데이터베이스의 상태 변경 사항을 내 표현으로 가져 오기”를 의미합니다. 계단식 연결은 간단합니다. 이는 모든 연관된 엔티티가 새로 고쳐 짐을 의미합니다.

MERGE는 “저장”에 가까운 복잡한 것을 의미하지만 “이 분리 된 엔티티를 관리 상태로 되돌리고 상태 변경 사항을 저장”하는 것과 비슷합니다. 계단식이란 모든 관련 엔터티가 동일한 방식으로 푸시되고 다시 가져온 관리 엔터티 핸들에 .merge()연결된 모든 관리 엔터티가 있음을 의미합니다.

관련 문서의 한 인스턴스에 링크


답변

다 대다 관계에 대한 JPA 주석 의미 :

  • ALL-소스 엔터티에서 수행되는 가능한 모든 계단식 작업이 연결 대상에 계단식으로 연결됩니다.
  • MERGE-소스 엔터티가 병합 된 경우 병합은 연결 대상에 계단식으로 연결됩니다.
  • PERSIST-소스 엔티티가 지속되는 경우 지속은 연관 대상에 계단식으로 연결됩니다.
  • REFRESH-소스 엔터티가 새로 고쳐지면 새로 고침이 연결 대상에 계단식으로 적용됩니다.
  • REMOVE-소스 엔티티가 제거되면 연관 대상도 제거됩니다.

나는 그것들을 이렇게 봅니다 (더 읽기 쉽습니다).

  • MERGE-기존 개체의 경우 테이블의 기존 데이터를 내 개체의 데이터와 병합 합니다. (데이터베이스에 동기화)
  • PERSIST-데이터베이스의 개체에서 새 레코드를 만듭니다.
  • REFRESH-개체의 데이터를 새로 고칩니다. 동기화해야하는 데이터베이스가 변경되었을 수 있습니다. (데이터베이스에서 동기화)
  • REMOVE-음, 삭제입니다.


답변