hibernate持久化或只是简单的SQL查询

时间:2010-08-04 18:07:28

标签: hibernate

我第一次在我的一个项目中使用hibernate。其中一个实体是Education(StudentObject,CollegeObject,MajorObject,degreeString)。要将Education对象插入数据库,我将从数据库中加载学生,大学和主要对象,然后实例化并持久化。这怎么比普通的sql(插入...)查询更好? sql查询不会更快,因为没有从数据库加载3个diff对象的开销吗?

2 个答案:

答案 0 :(得分:3)

  

sql查询不会更快,因为没有从数据库加载3个不同对象的开销吗?

如果我错了,请纠正我,但如果不是来自数据库,那么StudentObject,CollegeObject和MajorObject的ID在哪里?如果它们是某种参考数据,它们是二级缓存的完美候选者(这意味着根本没有数据库命中)。

无论你的答案是什么,我都认为在典型的CRUD应用程序中使用HMB的ORM是这样的:

  • 通过删除手动CRUD所需的所有恼人代码,缩短了开发时间。
  • 它提供了很好的功能,如延迟加载,二级缓存,查询缓存
  • 根据我的经验,它比普通开发人员生成了更好的SQL
  • 对于80%的用例,它将正常工作
  • 即使花了一些时间调整其他20%,你仍然会比没有ORM的时候更快。

总而言之,重点是提高发展的生产力,从这个角度来看,我的经验是积极的。在 general 中,它表现得非常好,实际上甚至比自定义代码更好(感谢延迟加载和二级缓存)。 对于某些用例,性能不会像自定义SQL那样“好”。但调整是可能的。

回到你的问题,我认为在某些用例中,这些好处是值得的(尽管我仍然不相信你的例子很好)。但你真的有性能问题吗?

答案 1 :(得分:0)

是。 SQL查询更快。

所有ORM框架都有这种开销。

问题在于,ORM框架应该提高开发人员的工作效率,并且如果确实使得事情运行缓慢,则应该管理SQL查询的开销。根据我的经验,这是非常罕见的。需要时,您通常可以依赖SQL。大多数应用程序都可以使用ORM框架。

如果我编写一个小应用程序,我甚至不会使用ORM框架。但这是你学习的机会。