是否有关于Hibernate事件类型的文档?

Tho*_*mas 5 java hibernate

我通常真的很犹豫要发布这样的问题,但是我似乎找不到任何可用的东西:是否有关于Hibernate事件的文档,即事件的含义,抛出事件,包含哪些数据等?

任何提示或链接将不胜感激。

要获得事件列表,我可以看一下,org.hibernate.event.spi.EventType然后从该类中获取实际的事件类。但是,这些类的文档很少,并且休眠用户手册或开发人员指南也不提供任何内容(只是如何注册侦听器,但这实际上很简单)。

我已经尝试添加仅在调用它们时记录日志的侦听器,但是输出顺序有些混乱,我对在什么时候调用什么进行了假设。

注意:以下示例可能看起来很长且很抽象,并且试图说明我的问题。我只在这里谈论2个事件,而还有33个事件似乎没有记录。

有2位听众:

  • PreloadEventListener-JavaDoc说 Called before injecting property values into a newly loaded entity instance.
  • LoadEventListener-JavaDoc说 Defines the contract for handling of load events generated from a session.

如您所见,JavaDoc至少提供的信息不多LoadEventListener。这两个事件实际上可能是指不同的情况,但是正如我已经说过的那样,我找不到任何文档。

侦听器也不总是以看起来相同的顺序被调用。我将两个侦听器添加到我们现有的一个Web应用程序中,从而获得了一些点击。

结果如下(抽象输出):

动作1输出

preload: entity of type A with id 0
Run Code Online (Sandbox Code Playgroud)

动作2输出

preload: entity of type A with id 1
load: entity of type A with id 1
preload: entity of type B with id 0
Run Code Online (Sandbox Code Playgroud)

动作3输出

preload: entity of type C  with id 0
load:    entity of type D  with id 0
load:    entity of type E  with id 0
load:    entity of type F  with id 0
load:    entity of type A  with id 0
preload: entity of type F' with id 0
preload: entity of type A  with id 0
load:    entity of type C  with id 0
...
load:    entity of type A  with id 0
load:    entity of type C  with id 0
Run Code Online (Sandbox Code Playgroud)

描述我们在这些操作中所做的操作超出了范围,但是如您所见,在操作3中,我们主要是加载简单的实体和更复杂的结构。

如您所见,有时仅触发预加载事件(例如,A在动作1中),有时仅加载(例如,F在动作3中),有时在预加载之后存在多个加载事件(例如,C在动作3中),甚至交替加载并预加载事件(例如,A在动作3中)。

F'将是的子类F,可以解释的加载F'后的预加载,F但其他情况很难解释。我确定存在确定性顺序,并且某些事件没有被调用的原因,但是正如我最初所说的,我缺少有关它的文档。

对于所有阅读“简短”示例的人:我希望它不会对您造成太大的困扰。如果需要,我可以提供一个更具体的示例,甚至是一个更简单的示例,但是我感到,这些更简单的示例产生的结果更易于解释,而我们对更复杂的现实世界的案例仍然不甚了解。正如我所说的,我正在寻找有关35个Hibernate事件类型的一些文档,而不是所描述案例的详细说明。