我想通过一个hibernate tutorial,他们说hibernate不适合以数据为中心的应用程序。它给程序提供了“面向对象的结构”,给我留下了非常深刻的印象,但我的应用程序非常以数据为中心(它可以获取和更新大量的记录。但我不使用任何存储过程)。我不能使用hibernate吗?是否有任何用于hibernate的包装器,我可以将其用于我的应用程序?感谢任何帮助。
答案 0 :(得分:2)
我不确定短语data centric
的具体含义。是不是所有数据库应用程序data centric
?但是,如果您处理大量数据,Hibernate可能不是最佳选择。 Hibernate最好表示映射到数据库的对象模型,它可能在任何应用程序中都有作用,但是要执行ETL(提取/转换/加载)任务,您可能需要手动编写非常有效的SQL。
答案 1 :(得分:1)
原则上你可以,但它往往很慢。 Hibernate或多或少为从数据库中检索的每一行创建一个对象。如果使用大量数据执行此操作,性能将受到严重影响。使用单个更新对许多行进行更新也只有非常基本的支持。
至少在对象创建问题上,包装器无济于事。
答案 2 :(得分:1)
使用Hibernate有很多优点,当一个人将对象模型作为开发人员正确时,通过对象与数据库交互有很多吸引力但实际上我发现Hibernate最初很棒但是当你变得非常沮丧时遇到性能和故障查找等问题。
在决定DA(数据访问)层时,我问自己这个问题。 我在编写一个需要运行不同数据库的应用程序吗?
如果答案是肯定的,那么我会考虑像Hibernate这样的(ORM)。 如果没有,那么我通常只会通过Spring使用JDBC。
我觉得通过JDBC与数据库交互更加透明,更容易找到错误和性能调整。