我在网上找到了一些关于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)
吗?
也许有人可以给我一个明确的在线文档的链接,解释听众的详细信息并回答这样的问题。感谢
答案 0 :(得分:0)
我在实践中想到了这一点,只是为了后代,这里有答案:
1)只要没有对数据库进行实际更改,PostUpdateEventListener
就不会真正运行,即使您明确地运行Flush
2)PostUpdateEventListener
仅运行[Name]
,以防它是实体。如果[Name]
是一个组件,PostUpdateEventListener显然会运行for @event.Entity is [Person]
。