[java] CascadeType.REFRESH는 실제로 무엇을합니까?

CascadeType.REFRESH실제로 무엇을 합니까?

그것에 대한 정의는

항목을 새로 고치면이 필드에있는 모든 항목도 새로 고쳐집니다.

그러나 이것은 실제로 무엇을 의미합니까? 누군가 나에게 간단한 예를 들어 줄 수 있습니까?



답변

개별 CascadeType 설명은 약간 혼란 스러울 수 있지만 일반적인 경우에서 쉽게 알아낼 수있는 방법이 있습니다.

모든 CascadeType값에 X대해 EntityManager인터페이스 를 사용하는 인스턴스에서 작업 이 호출 되고 해당 인스턴스에 다른 엔터티 인스턴스에 대한 참조가 있고 해당 연결이 CascadeType.X정의 된 경우 EntityManager작업이 해당 연결된 엔터티에도 적용됨을 의미합니다.

따라서 EntityManager.refresh()다음과 같이 정의됩니다.

데이터베이스에서 인스턴스 상태를 새로 고치고 엔티티에 대한 변경 사항이있는 경우 덮어 씁니다.

엔티티 A가 엔티티 B에 대한 참조를 가지고 있으며, 그 참조가 주석을 붙일 그렇다면 @CascadeType.REFRESH, 및 EntityManager.refresh(A)호출, 다음 EntityManager.refresh(B)암시 적으로도 불린다.


답변

새로 고침으로 검색 : 관리되는 개체는 새로 고침 방법을 사용하여 데이터베이스에서 다시로드 할 수 있습니다.

메모리에있는 관리 개체의 내용은 삭제되고 (있는 경우 변경 사항 포함) 데이터베이스에서 검색된 데이터로 대체됩니다. 이는 검색된 이후 다른 EntityManager에 의해 변경되었을 수있는 경우에 대비하여 응용 프로그램이 엔티티 객체의 최신 버전을 처리하도록하는 데 유용 할 수 있습니다.

출처 : http://www.objectdb.com/java/jpa/persistence/retrieve


답변