Native SQL(使用 MySQL)与使用 Hibernate ORM 的性能差异?
Posted
技术标签:
【中文标题】Native SQL(使用 MySQL)与使用 Hibernate ORM 的性能差异?【英文标题】:Performance difference of Native SQL(using MySQL) vs using Hibernate ORM? 【发布时间】:2011-04-13 11:02:29 【问题描述】:我正在将 Spring MVC 用于涉及用于管理的多级后端和客户/成员前端的应用程序。该项目最初是在没有框架和简单的本地 JDBC 调用来访问数据库的情况下开始的。
随着项目的显着增长(就像他们一直做的那样),我进行了更重要的数据库调用,有时会查询较大的选择大小。
我正在尽我所能处理我的 db 调用以密切模拟对象关系映射最佳实践,但我仍然只是使用 JDBC。我一直在考虑是否应该过渡到休眠状态,但不确定是否值得。如果值得提高性能,我愿意这样做。
与使用 JDBC 的原生 SQL 相比,使用 Hibernate(甚至只是对象关系映射)是否有任何性能提升?
【问题讨论】:
【参考方案1】:与使用 JDBC 的原生 SQL 相比,使用 Hibernate(甚至只是对象关系映射)是否有任何性能提升?
使用 ORM、数据映射器等不会使相同的 SQL 查询运行得更快。但是,使用 Hibernate 时,您可以从 延迟加载、二级缓存、查询缓存等功能中受益,这些功能可能有助于提高性能.我并不是说 Hibernate 对每个用例都是完美的(对于 Hibernate 不能很好处理的特殊情况,你总是可以回退到本机 SQL),但它做得非常好并且肯定会缩短开发时间(即使在增加时间之后用于优化)。
但说服自己的最好方法是测量事物,在你的情况下,我可能会创建一个涵盖一些代表性场景的 Hibernate 原型并将其作为基准。
【讨论】:
【参考方案2】:Hibernate 将使您的应用程序的开发和维护更容易,但不一定会使数据库访问更快。
如果您的本机 JDBC 调用使用低效的 SQL,那么您可能会看到一些性能改进,因为 HIbernate 倾向于生成良好的 SQL。
【讨论】:
【参考方案3】:ORM 可让您留在 OOP 世界中,但这是以性能为代价的,尤其是在我们的例子中是多对多关系。我们默认使用 Hibernate,在需要时使用 jdbc 进行性能优化。
【讨论】:
以上是关于Native SQL(使用 MySQL)与使用 Hibernate ORM 的性能差异?的主要内容,如果未能解决你的问题,请参考以下文章
Hibernate使用HQL,Criteria和Native SQL查询,哪个好?
[08001] [Microsoft] [SQL Server Native Client 11.0] 命名管道提供程序:无法打开与SQL Server的连接
Android Socket学习java与native_socket通信