hibernate v / s存储过程或函数性能

时间:2011-05-10 19:13:09

标签: performance hibernate plsql

我正在分析应用程序中数据库层的选项。我发现hibernate是一个非常受欢迎的选择,但很少有朋友告诉我更好地使用存储过程/函数而不是去休眠。与这些数据库对象相比,Hibernate存在性能问题。还有其他选择。我的应用程序可能具有非常大量的事务,因此需要选择能够提供更好性能的选项。有人可以对此有所了解并帮助我选择最佳选择。我使用spring框架作为web层的核心和richfaces。

3 个答案:

答案 0 :(得分:3)

  

我的申请可能非常高   交易量如此需要   选择一个更好的选项   性能

好吧,如果性能是您唯一的(或主要)基准测试,那么它很难击败数据库服务器上的Oracle软件包。但是,贵公司应该考虑其开发人员的优势。这是一个主要是Java开发者和1或2个孤独的Oracle开发者和1个DBA的商店吗?如果是这样,不要在Oracle包中开发中间件系统,你可能会使用Hibernate用Java编写一些XML服务。在负载下不会那么快,但对于您的公司来说将更容易维护和发展。

注意:我偏向于使用Oracle技术,但这就是我的优势所在。

答案 1 :(得分:2)

最好的选择是你会弄清楚。有时使用任何ORM都非常好并且会支持你,其他情况下它不是最好的选择。我认为真正的答案取决于你在做什么,你是如何做的以及产品设计的质量。所有这些都有所不同,可以极大地决定失败或成功。

底线,绝对是一个可怕的政策 - 使用有效的技术并解决问题。如果它开始出现问题,请重新评估。

答案 2 :(得分:1)

现在已经很晚了,但我想补充几点使用hibernate和使用存储过程。

从性能的角度来看,我认为,由于编写存储过程意味着您更接近数据库,因此如果有效地编写,它将总是导致更快的输出。因此hibernate,因为它在数据库上的工作实际上并不比数据库快。优化查询的自由是hibernate从您窃取的东西,而hibernate可能会提出许多最佳查询,可能仍有一些机会进行更好的优化。

即使是专业的hibernate开发人员也承认,如果你要更新大型数据集,最好使用一个过程,而不是通过网络与hibernate进行多次调用。

总而言之,我建议使用程序和功能以获得良好的性能