一般来说哪种Java ORM被认为是性能最高的?

一般来说哪种Java ORM被认为是性能最高的?

我意识到这可能意味着更少的function,但只是想要一个想法。

几年前,在我工作的地方,我们花了一些时间来比较普通JDBC,Hibernate,TOPLink和Weblogic CMP对典型用例(获取,更新,连接提取,部分提取等)的性能。 Hibernate,TOPLink或Weblogic CMP与普通JDBC相比没有增加任何重大开销。 Hibernate有一个小的性能问题,但事实certificate这是Oracle驱动程序中的一个错误(该团队也实施了一个解决方法)。

话虽如此,我应该补充一点,让这些工具表现良好并非易事 – 人们应该很好地理解所发生的事情,并熟悉配置参数。 此外,使用ORM很容易生成错误的查询(例如N + 1个问题)。

最终我们选择了Hibernate,因为我们更喜欢它的编程模型(非常非侵入性),因为它是免费的(如啤酒)。

定义表现? 对操作所需的典型操作的性能最有意义,因此您可以定义持久层操作。 JDO是最可配置的标准化API,而JPA是最常用的(几乎没有机会调整它)。 DataNucleus提供了两者。 如果你有像PolePosition基准这样的操作,那么DataNucleus相对于竞争解决方案表现得非常好(通过全部调整); 但是那个基准测试并不一定能执行你的典型操作。

Ujorm 声称自己是最高效的 。 老实说,我以前从未听说过, 谷歌只是弹出它。

无论如何,这取决于环境和function要求。 衡量就是知道。 我不认为这些差异令人震惊。 所有自尊的ORM框架和实现都可以调整到极致。 毕竟我更喜欢一个已知的,清晰简洁的API,而不是一个模糊的API和性能。 到目前为止, JPA(2)在这方面表现优异。

我认为Hibernate的投票是对Java最流行的ORM。 它表现良好,非常成熟。 我会提醒您考虑其他问题可能会导致ORM性能问题。 也就是说,假设您正确配置和使用ORM,ORM通常不会成为您的瓶颈。

你的问题的问题是“ 一般来说 ”。 没有这样的东西,没有“ 一般 ”的应用程序。 每个应用程序都有自己的对象模型和请求,并且使用一个特定ORM获得的性能不一定能转换到另一个应用程序(换句话说,另一个应用程序可能在另一个ORM解决方案中表现更好)。

因此,如果您想找到问题的答案,请在应用程序上使用各种ORM。 如果您正在使用JPA并且您没有使用专有扩展,那么这并不难做到(请注意,更改JPA提供程序并不会阻止您对其进行调整)。 需要更多努力才能包含其他ORM解决方案。

Hibernate是目前最流行的选择。 当需要来自非常大的社区的支持时,这尤其好。 但是,它也有其缺点 – 如批量插入。 这取决于你想要做什么以及你需要什么样的性能。 一般来说,Hibernate非常快。