首页 > 解决方案 > 从 Hibernate 3 迁移到 Hibernate 5 时的严重性能影响

问题描述

我打算从 Hibernate 3.6.6 迁移到 Hibernate 5。实际迁移似乎并不困难,但面临的最大问题是性能问题。过去在 Hibernate 3 中大约 15 秒完成的事务在 Hibernate 5 中需要超过 4 分钟才能完成。这真是令人震惊,我不敢相信。

当使用调试日志进一步钻取时,观察到 Hibernate 3 仅初始化 Non-Lazy 集合,而 Hibernate 5 似乎处理了所有集合,包括 Lazy 集合。在hibernate 3的日志文件中可以发现engine.StatefulPersistencContex.initializeNonLazyCollections:893,没有发现Hibernate 5这样做

在该类AbstractFlushingEventListener中,Hibernate 3 日志中用于处理集合的条目非常少(20K)engine.Collections.processReachableCollections,而在 Hibernate 5 日志中发现了更多的 900 万个此类条目,并为惰性日志提供了级联集合。

因此,很明显延迟是从哪里引起的。惊讶地看到这种行为没有看到任何相关的线程。

只是为了澄清所有集合都带有注释FetchType.LAZY。没有任何实体代码。

有没有人遇到过这个...任何帮助/指针将不胜感激。提前致谢。

标签: performancehibernate

解决方案


推荐阅读