1

我正在浏览一个休眠教程,他们说休眠不适合以数据为中心的应用程序。它为程序提供的“面向对象结构”给我留下了深刻的印象,但我的应用程序非常以数据为中心(它获取和更新大量记录。但我不使用任何存储过程)。我不能使用hibernate吗?是否有任何通过hibernate编写的包装器,我可以将其用于我的应用程序?感谢任何帮助。

4

3 回答 3

2

我不确定短语的具体含义data centric。不是所有的数据库应用程序data centric吗?但是,如果您确实要处理大量数据,那么 Hibernate 可能不是最佳选择。Hibernate 最适合表示映射到数据库的对象模型,它可能在任何应用程序中发挥作用,但要执行 ETL(提取/转换/加载)任务,您可能需要手动编写非常高效的 SQL。

于 2011-06-12T05:35:42.683 回答
1

原则上你可以,但它往往很慢。Hibernate 或多或少为从数据库中检索到的每一行创建一个对象。如果您对大量数据执行此操作,性能会受到严重影响。此外,使用单个更新对多行进行的更新也只有非常基本的支持。

包装器无济于事,至少在对象创建问题上。

于 2011-06-12T05:47:46.497 回答
1

使用 Hibernate 有很多优点,当一个开发人员获得正确的对象模型时,通过对象与数据库交互有很多吸引力,但在实践中,我发现最初 Hibernate 很棒,但遇到问题时会变得非常沮丧比如性能和故障查找。

当谈到 DA(数据访问)层的决策时,我问自己这个问题。我是否正在编写一个需要运行不同数据库的应用程序?

如果答案是肯定的,那么我会考虑像 Hibernate 这样的(ORM)。如果不是,那么我通常只会通过 Spring 正常使用 JDBC。

我觉得通过 JDBC 与数据库交互更透明,更容易发现故障和性能调整。

于 2011-06-12T07:35:19.577 回答