关于NHibernate听众的问题

时间:2015-12-09 22:00:27

标签: nhibernate

我在网上找到了一些关于NHb听众的信息,比如这个文档: http://docs.jboss.org/hibernate/orm/3.5/javadocs/org/hibernate/event/package-summary.html,但要详细了解它们的工作方式并不完全足够。这是关于让我们说PostUpdateEventListener我无法找到答案的问题:

1)当我们调用Session.Save(entity)并且没有对实体进行任何更改时,它是否真的运行,我的意思是没有SQL Update脚本在数据库上运行?如果是,是否有任何Nhb事件/侦听器跟踪实际的数据库更新,只有UPDATE语句在db上运行?如果它有任何不同,我们的实体配置了DynamicUpdate()

2)如果我们有单独的嵌套实体,如[Name](不是组件,存储到单独的表)或实体列表,我们的监听实体(如[Person]所引用的)。现在我们更新人名,而不对[Person]实体属性进行任何更改。如果我们运行PostUpdateEventListener,或者[名称]只运行一次,那么[Person]会调用Session.Save(person)吗?

也许有人可以给我一个明确的在线文档的链接,解释听众的详细信息并回答这样的问题。感谢

1 个答案:

答案 0 :(得分:0)

我在实践中想到了这一点,只是为了后代,这里有答案:

1)只要没有对数据库进行实际更改,PostUpdateEventListener就不会真正运行,即使您明确地运行Flush

2)PostUpdateEventListener仅运行[Name],以防它是实体。如果[Name]是一个组件,PostUpdateEventListener显然会运行for @event.Entity is [Person]