Java 更新Hibernate后,如何创建SessionFactory变得缓慢?

Java 更新Hibernate后,如何创建SessionFactory变得缓慢?,java,hibernate,Java,Hibernate,在我的JavaSE应用程序中,我使用了Hibernate3.3.2,创建SessionFactory大约需要5秒钟 今天我更新到Hibernate3.5.1,突然它花了一分钟 造成如此戏剧性效果的原因是什么 我在一天中的大部分时间尝试了不同的事情,但我不知道 我收集的一些数据 根据探查器,在PersisterFactory.createClassPersister中花费的时间最多,而在该方法中ProxyFactory.createClass花费的时间最多 日志显示没有什么异常 更改hibern

在我的JavaSE应用程序中,我使用了Hibernate3.3.2,创建SessionFactory大约需要5秒钟

今天我更新到Hibernate3.5.1,突然它花了一分钟

造成如此戏剧性效果的原因是什么

我在一天中的大部分时间尝试了不同的事情,但我不知道

我收集的一些数据

  • 根据探查器,在
    PersisterFactory.createClassPersister
    中花费的时间最多,而在该方法中
    ProxyFactory.createClass
    花费的时间最多
  • 日志显示没有什么异常
  • 更改
    hibernate.bytecode.use\u reflection\u optimizer
    没有任何区别

呃,从来没有过Hibernate 3.4。Hibernate 3.3.2是Hibernate 3.5之前的最后一个公开发行版。好吧,这绝对是愚蠢的,与Hibernate一点关系都没有,但我还是要回答这个问题,因为它可能会阻止其他人犯同样的错误

  • 在Hibernate 3.5中创建SessionFactory并不慢
  • 创建SessionFactory时,有数千个方法调用用于初始化Hibernate
  • 每个方法调用似乎都会为探查器和调试器产生少量开销。此外,JIT编译器在调试期间被禁用
  • 当我第一次注意到缓慢时,我是单步执行代码的,所有后续的测试都是使用分析器完成的
  • 我只是注意到,因为沮丧,我只是运行应用程序,没有任何进一步跟踪问题的意图

  • 打开org.hibernate的debug,看看arisesI是否做了任何可疑的事情,忘了提及。啊,这就是OP遇到此问题的原因;)我重新检查了,是的,是3.3.2尝试减少映射为资源的类的数量,看看是否可以隔离问题。例如,只映射一个类和时间,并与旧代码进行比较。