在NHibernate中查看创建/更新列的所有可能性我主要(Stackoverflow question,Ayende Rahien)查看了Listeners的解决方案。
在我公司编程的程序员使用Interceptor来实现同样的目的。
这两种解决方案有什么区别吗? (其中一个是过时的,是其中一个首选,有哪些优点和/或缺点)
答案 0 :(得分:17)
拦截器是旧的方式,事件监听器更新,服务器的目的相同。因此,在新项目中,建议使用事件监听器。您可以连接到新的 NHibernate事件系统。
编辑:正如Rashack在评论中提到的那样,有些操作只能使用拦截器来完成。
答案 1 :(得分:0)
根据文档,它指出: “如果必须对持久层中的特定事件做出反应,则还可以使用Hibernate事件体系结构。可以将事件系统另外或用作拦截器的替代。”
两者都有一些区别:
侦听器很容易配置,即根据休眠文档“在注册过程中额外定义了类型,这使得在配置过程中更容易打开或关闭自定义侦听器”
拦截器可以通过编程以及声明性方法在会话范围内或在会话工厂范围内使用。另一方面,以声明方式注册的侦听器无法共享实例。如果在多个元素中使用相同的类名,则每个引用将导致该类的单独实例。如果需要在侦听器类型之间共享侦听器实例,则必须使用编程注册方法。