우리는 이제 NHibernate를 시작하고 NH Cookbook 3.0을 보았습니다.이 NH Cookbook 3.0은 객체 작성자와 언제 누가 객체를 변경했는지와 함께 객체를 스탬핑하기 위해 EventListener를 사용하는 것을 강조합니다. 이제는 감사 추적 이벤트 리스너를 구현하는 중입니다 (속성 값 변경 기록 생성). 각각 하나의 작업을 처리하는 두 개 이상의 이벤트 리스너 또는 여러 개의 작업을 처리하는 단일 이벤트 리스너를 갖는 것이 가장 좋습니다. 두 개의 이벤트 리스너 모델 하다니NHibernate EventListeners를 여러 개 가지고있는 것이 좋은 생각입니까?
public class EventListener : IPreInsertEventListener, IPreUpdateEventListener
{
...
...
public bool OnPreUpdate(PreUpdateEvent e)
{
_stamper.Update(e.Entity as IStampedEntity, e.OldState, e.State, e.Persister);
_auditTracker.Update(e.Entity as IAuditTrackedEntity, e.OldState, e.State, e.Persister);
return false;
}
}
이 같은 것 : 가장 좋은 방법으로 간주됩니다
public class StamperEventListener : IPreInsertEventListener, IPreUpdateEventListener
{
...
...
public bool OnPreUpdate(PreUpdateEvent e)
{
_stamper.Update(e.Entity as IStampedEntity, e.OldState, e.State, e.Persister);
return false;
}
}
public class AuditHistoryEventListener : IPreUpdateEventListener
{
...
...
public bool OnPreUpdate(PreUpdateEvent e)
{
_auditTracker.Update(e.Entity as IAuditTrackedEntity, e.OldState, e.State, e.Persister);
return false;
}
}
거기에 어떤 성능처럼
그래서 하나의 이벤트 리스너 코드가 보일 것이다 어느 한쪽으로 결점이 있습니까? 나중에 (두 개의 개별 이벤트 리스너) 명확화 및 유지 관리를위한 최상의 구현처럼 보일 수 있지만 나중에 문제가 발생할 것인지 확실하지 않습니다.
는 그냥 빨리 업데이트뿐만 아니라 NH 3.0 요리 책에서 권장하는 스탬퍼, 우리는에서 참조 모델을 사용하여 전체 감사 추적을 추가 한 이 블로그 기사 : http://darrell.mozingo.net/2009/08/31/auditing-with-nhibernate-listeners/. 따라서 두 이벤트 리스너의 이유. –