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