2011-12-26 5 views
0

동시에 데이터베이스에서 여러 세션이 작동합니다. (정규 DB 세션과 NHibernate 세션)첫 번째 레벨 캐시의 부실 데이터

D.B.에서 엔터티를 처음받을 때. 엔티티는 1 차 캐시 - 신원 맵에 저장됩니다.

첫 번째 쿼리 후 어떻게됩니까? NH 세션 외부에서 엔터티가 변경 되었습니까? 데이터가 오래되었습니다.

session.Get<Cat>(1).Name == "Bar" // true 
// different session trigger updated the cat name to "Foo"  
session.Get<Cat>(1).Name == "Bar" // true 

NHibernate 세션을 세션 외부의 변경 사항과 동기화하는 방법이 있습니까? 쉽게

답변

2

:

session.Refresh(cat); 
+0

수정하고 항상 도움이 ... 변화가 전에 일어난 경우에 대해 나는 물체를 무엇 새로 고칩니다. 엔티티가 변경되지 않았 음을 확인하기 위해 모든 라인을 새로 고침하고 싶지 않습니다. 나 한테 뭐가있어? – gdoron

+0

어떤 세션에 커밋이있을 때마다 모든 세션의 모든 항목을 자동으로 새로 고치려고하십니까? 메시징 (즉, 모든 세션 컨테이너에 대한 브로드 캐스트 업데이트 메시지)을 할 수 있지만 대신 낙천적 동시성을 사용합니다. –

+0

NH 세션이 아닌 다른 세션에서 변경된 엔티티 만 업데이트하면됩니다. 모든 세션 ID 맵을 새로 고칠 필요는 없습니다. – gdoron

관련 문제