nhibernate 프록시는 변경 사항 추적을 효율적으로 수행하기 위해 스마트 작업을 수행합니까? 또는 Entity Framework에서 스냅 숏 기반 변경 추적을 호출하는 것만 지원합니까?NHibernate는 변경 추적을 어떻게 구현합니까?
답변
스냅 샷 기반입니다.
엔티티를로드 할 때 상태가 객체 []로 세션에 저장됩니다.
플러시 할 때 현재 상태가 개체 []로 변환되고 원래 상태와 비교되어 더러운 속성을 확인합니다.
이는 여러 가지 이유로 더 효율적입니다. 그 중 하나는 에 프록시가 변경 사항을 추적 할 필요가 없다는 것입니다. 또 다른 속성은 속성을 다른 값으로 설정 한 다음 되돌리면 엔티티가 더티가 아닌 것으로 간주되어 불필요한 DB 호출을 피할 수 있다는 것입니다.
NHibernate 및 EntityFramework 트랙은 매우 다른 방식으로 변경됩니다. Entity Framework는 엔터티 자체의 변경 내용을 추적합니다. NHibernate는 세션의 변경을 추적합니다.
엔티티의 변경 내용을 추적하려면 이전 값과 이후 값을 저장하므로 더 많은 메모리가 필요합니다. 개체는 ObjectContext와의 연결을 끊은 후에도 변경 내용 추적을 유지할 수 있습니다.
세션의 변경 내용을 전체적으로 추적하는 것이 더 효율적이지만 세션에서 엔터티의 연결을 끊으면 변경 내용 추적이 손실됩니다.
이 문구가 맞습니까? 내가 아는 한, EF는 소위 변경 추적기를 사용하여 엔티티 변경 사항을 추적합니다. 변경 추적 인프라는 해당 엔터티에 포함되어 있지 않습니다. – Andreas
- 1. MVVM에서 변경 내용 추적을 어떻게 처리합니까?
- 2. IronPython에서 인터페이스를 어떻게 구현합니까?
- 3. 델리게이트 팩토리는 어떻게 구현합니까?
- 4. 어떻게 MPVolumeView를 구현합니까?
- 5. 여기에 핸들러를 어떻게 구현합니까?
- 6. 비트 배열을 어떻게 구현합니까?
- 7. Html.RenderAction으로 ModelBinding을 어떻게 구현합니까?
- 8. 인터페이스는 어떻게 기능을 구현합니까?
- 9. 어떻게 비트 맵을 구현합니까?
- 10. 어떻게 네트워크 콜백을 구현합니까?
- 11. Java 서버는 어떻게 구현합니까?
- 12. IValidatableObject는 어떻게 구현합니까?
- 13. IEnumerable은 어떻게 구현합니까?
- 14. Matlab은 knnclassify를 어떻게 구현합니까?
- 15. 객체 이벤트, 어떻게 구현합니까?
- 16. Chrome에서 탭을 어떻게 구현합니까?
- 17. TOMCAT에서 스택 추적을 어떻게 생성합니까?
- 18. yelp.com 스타일의 Google지도는 어떻게 구현합니까?
- 19. Cocos2d에서 "드래그"옵션을 어떻게 구현합니까?
- 20. 이러한 템플릿 엔진은 어떻게 구현합니까?
- 21. jQuery에서 특별한 이벤트를 어떻게 구현합니까?
- 22. 주기적인 메시지 요약을 어떻게 구현합니까?
- 23. 아코디언 스타일 메뉴는 어떻게 구현합니까?
- 24. VBScript에서 select 문을 어떻게 구현합니까?
- 25. Qt에서 대리자를 어떻게 올바르게 구현합니까?
- 26. 컴파일러에서 순방향 참조를 어떻게 구현합니까?
- 27. 구성 및 설정을 어떻게 구현합니까?
- 28. 데이터베이스 벤더는 어떻게 트랜잭션을 구현합니까?
- 29. Common Lisp에서이 문제를 어떻게 구현합니까?
- 30. 태그 검색은 어떻게 구현합니까? 루신과?
감사 로깅, 변경 사항이 기록되는 항목 또는 이전 버전의 항목으로 되돌릴 수있는 전체 변경 관리에 대해 이야기하고 있습니까? – DanK
엔터티에 여러 속성이있는 경우 ORM은 속성 만 변경된 데이터베이스에 업데이트 문을 실행해야합니다. LINQ TO SQL에서는 INotifyPorpertyChanging/Changed 인터페이스를 통해 속성이 변경되었는지 여부를 알 수 있습니다 (요구 사항은 아니지만 스냅 샷 기반 변경 추적으로 되돌아갑니다. 즉 모든 속성을 비교하여 변경된 속성을 찾습니다).). – Alice