NHibernate:拦截器和侦听器之间的区别

NHibernate:拦截器和侦听器之间的区别,nhibernate,listener,interceptor,Nhibernate,Listener,Interceptor,查看NHibernate I中创建/更新列的所有可能性,主要是(,)请参阅侦听器解决方案 在我公司编写这个程序的程序员使用了一个拦截器来实现同样的目标 这两种解决方案有什么区别吗?(其中一个是过时的,是首选的,优点和/或缺点是什么)拦截器是旧的方式,事件侦听器是更新的,服务器也是相同的用途。因此,在新项目中,建议使用事件侦听器。您可以连接到新的NHibernate事件系统 编辑:正如拉沙克在评论中提到的,有些操作只能使用拦截器完成。根据文档,它声明: 如果必须对持久层中的特定事件作出反应,还可以

查看NHibernate I中创建/更新列的所有可能性,主要是(,)请参阅侦听器解决方案

在我公司编写这个程序的程序员使用了一个拦截器来实现同样的目标


这两种解决方案有什么区别吗?(其中一个是过时的,是首选的,优点和/或缺点是什么)

拦截器是旧的方式,事件侦听器是更新的,服务器也是相同的用途。因此,在新项目中,建议使用事件侦听器。您可以连接到新的NHibernate事件系统


编辑:正如拉沙克在评论中提到的,有些操作只能使用拦截器完成。

根据文档,它声明: 如果必须对持久层中的特定事件作出反应,还可以使用Hibernate事件体系结构。事件系统可以作为拦截器的补充或替代

这两方面都有一些不同之处:

  • 监听器易于配置,即根据hibernate文档“在注册过程中另外定义类型使在配置过程中更容易打开或关闭自定义监听器”

  • 拦截器可以是会话作用域,也可以是会话工厂作用域,通过编程方式和声明方式实现。另一方面,以声明方式注册的侦听器不能共享实例。如果在多个元素中使用相同的类名,则每个引用将产生该类的单独实例。如果需要在侦听器类型之间共享侦听器实例,则必须使用编程注册方法


  • 这并不完全正确。尽管事件监听器较新且推荐使用,但仍有某些操作无法使用它们。即提供您的方法来稳定对象并捕获事务的开始/结束。感谢您的提示。我不知道这件事。