一般来说哪种Java ORM被认为是性能最高的?
我意识到这可能意味着更少的功能,但只是想要一个想法。
答案 0 :(得分:7)
几年前,在我工作的地方,我们花了一些时间来比较普通JDBC,Hibernate,TOPLink和Weblogic CMP对典型用例(获取,更新,连接提取,部分提取等)的性能。 Hibernate,TOPLink或Weblogic CMP没有增加任何明显的开销,而不是简单的JDBC。 Hibernate有一个小的性能问题,但事实证明这是Oracle驱动程序中的一个错误(团队也实施了一个解决方法)。
话虽如此,我应该补充一点,让这些工具表现良好并非易事 - 人们应该很好地了解幕后发生的事情并熟悉配置参数。此外,使用ORM很容易生成错误的查询(例如N + 1个问题)。
最终我们选择了Hibernate,因为我们更喜欢它的编程模型(它非常非侵入性),因为它是免费的(如啤酒)。
答案 1 :(得分:2)
定义表现? 对操作所需的典型操作的性能最有意义,因此您可以定义持久层操作。 JDO是最可配置的标准化API,而JPA是最常用的(几乎没有机会调整它)。 DataNucleus提供了两者。 如果你有像PolePosition基准这样的操作,那么DataNucleus相对于竞争解决方案表现得非常好(通过全部调整);但是那个基准测试不一定会执行你的典型操作。
答案 2 :(得分:1)
Ujorm claims是最高效的。 老实说,我以前从未听说过,Google刚刚弹出它。
无论如何,这取决于环境和功能要求。衡量就是知道。我不希望这些差异令人震惊。所有自尊的ORM框架和实现都可以调整到极致。毕竟我更喜欢一个已知的,清晰简洁的API,而不是一个不起眼的API和性能。到目前为止JPA(2)在这方面表现优异。
答案 3 :(得分:0)
我认为Hibernate的投票是对Java最流行的ORM。它表现良好,非常成熟。我会提醒您考虑其他问题可能会导致ORM性能问题。也就是说,假设您正确配置并使用它,ORM通常不会成为您的瓶颈。
答案 4 :(得分:0)
您的问题的问题是“一般来说”。没有这样的东西,没有“通用”应用程序。每个应用程序都有自己的对象模型和请求,并且使用一个特定ORM获得的性能不一定能转换到另一个应用程序(换句话说,另一个应用程序可能在另一个ORM解决方案中表现更好)。
因此,如果您想找到问题的答案,请在您的应用程序上使用各种ORM。如果你正在使用JPA并且你没有使用专有扩展,那就不难了(请注意,更改JPA提供程序不会阻止你调整它)。需要更多努力才能包含其他ORM解决方案。
答案 5 :(得分:-1)
Hibernate是目前最流行的选择。当需要来自非常大的社区的支持时,这尤其好。但是,它也有其缺点 - 如批量插入。这取决于你想要做什么以及你需要什么样的性能。一般来说,Hibernate非常快。