3

我们正在开发一个与数据仓库交互并检索数据进行分析的应用程序。

在这种情况下,休眠会成为性能开销,因为对数据仓库的写入将非常少。

意图是在业务层和数据层之间具有松散耦合。

对于这个要求,Spring JDBC 是否比使用 ORM 更理想?

4

4 回答 4

2

For more reads, I second using Spring JDBC with caching. I would first try caching at the Database level and if that is not performant enough then move to application level caching.

于 2012-08-08T11:37:13.573 回答
1

ORM 仅在您实际计划将结果用作对象时才有用。如果你把它放在一个合理的缓存(ehcache)后面,性能应该可以与 JDBC 相媲美。

于 2012-08-08T13:59:10.250 回答
1

Hibernate 可能不如经过调整的 Spring JDBC 高效,但它更易于使用,因此可以提高您的工作效率。此外,它可能不会成为您应用程序的瓶颈!

它很容易设置,所以我建议您试一试,并感谢您节省使用它的时间!这可能比使用 JDBC 节省的几毫秒更有价值......

于 2012-08-08T07:43:49.470 回答
1

在大多数读取应用程序的情况下,Hibernate 性能更好。请注意,由于以下原因,您可能仍然存在性能问题:
A. 对象代理
的大量使用 B. SQL 生成可能很好,但没有优化 - 我强烈建议她在配置中打开 show_sql = true 属性如果您选择休眠解决方案,请仔细监控某些基准测试中的 SQL 调用。


为了克服 B - 请考虑通过 hibernate 调用存储过程并将结果映射到对象(使用 Hibernate 进行对象映射,而不是 SQL 生成),从这个意义上说,Hibernate 将在行为上更接近 Spring-JDBC。
此外,考虑使用 Hibernate 的缓存状态来提高性能 - 不确定这在您的情况下是否可行 - a。查询缓存
B. 一级缓存(在会话范围内)
c.二级缓存 - 在应用程序范围内
我还建议进行适当的设计,并让您的 DAL 尽可能松散耦合,因此如果 Hibernate 性能不佳,您可以轻松切换到其他替代方案,例如作为 Spring-JDBC

于 2012-08-10T18:32:13.443 回答