Nous commençons tout juste avec NHibernate et avons regardé le NH Cookbook 3.0 qui met en évidence en utilisant un EventListener pour estamper un objet avec qui a créé un objet et quand, qui a changé un objet et quand. Nous cherchons maintenant à implémenter un écouteur d'événement de suivi d'audit (en créant un historique des changements de valeur de propriété). Est-il considéré comme la meilleure pratique d'avoir deux (ou plus) écouteurs d'événements gérant chacun une tâche, ou un seul écouteur d'événements gérant plusieurs tâches.Est-ce une bonne idée d'avoir plusieurs EventListeners NHibernate?
Ainsi, le code d'écouteur d'événement unique ressemblerait à quelque chose comme:
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;
}
}
Alors que les deux cas modèle d'écouteur serait quelque chose comme:
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;
}
}
Ce qui est considéré comme la meilleure pratique et quels sont les performances inconvénients à l'un ou l'autre? Le plus tard (deux auditeurs d'événements distincts) semblerait être la meilleure implémentation à la fois pour la clarification et la maintenance, mais nous ne savons pas si cela va nous causer des problèmes plus tard.
Tout comme une mise à jour rapide, ainsi que le Stamper recommandé dans le livre de recettes NH 3.0, nous avons ajouté un suivi d'audit complet à l'aide du modèle référencé dans cet article de blog: http://darrell.mozingo.net/2009/08/31/auditing-with-nhibernate-listeners/. D'où la raison pour les deux auditeurs d'événements. –