2010-12-02 3 views
0

우리는 이제 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; 
    } 
} 

거기에 어떤 성능처럼

그래서 하나의 이벤트 리스너 코드가 보일 것이다 어느 한쪽으로 결점이 있습니까? 나중에 (두 개의 개별 이벤트 리스너) 명확화 및 유지 관리를위한 최상의 구현처럼 보일 수 있지만 나중에 문제가 발생할 것인지 확실하지 않습니다.

+0

는 그냥 빨리 업데이트뿐만 아니라 NH 3.0 요리 책에서 권장하는 스탬퍼, 우리는에서 참조 모델을 사용하여 전체 감사 추적을 추가 한 이 블로그 기사 : http://darrell.mozingo.net/2009/08/31/auditing-with-nhibernate-listeners/. 따라서 두 이벤트 리스너의 이유. –

답변

2

나는 유지 보수상의 이유로도 별도의 구현을 고수 할 것입니다. 저는이 문제를 아무런 문제없이 몇 가지 최신 프로젝트에서 사용하고 있습니다. 미래에 어느 시점에서 특정 행동을 제공할지 궁금 할 것입니다 리스너 중 하나에서 -이 경우 기존 코드에 영향을주지 않고 구성을 새 리스너/구현으로 다시 지정하면됩니다. 단지 2 센트.

+0

고마워, 내 생각도 뒷받침 해. –

0

대부분의 경우 성능에 현저한 영향이 없어야하므로 각 우려 사항에 대해 별도의 이벤트 수신기를 선호합니다.

등 유지 관리, 테스트 용이성, 재사용에 도움이 될

관련 문제