【问题标题】:Reasons to use a persistence framework in Java EE?在 Java EE 中使用持久性框架的原因?
【发布时间】:2012-05-17 13:51:55
【问题描述】:
我正在开发一个 Java EE 应用程序,我使用 Spring 作为框架。
现在我看到人们谈论 ORM 框架(Hibernate/JPA/iBatis...),但我不知道使用这些框架的原因可能是什么?
我的意思是这些框架将在项目功能和性能方面发生什么变化?
如果你能给我一个清晰的例子,那就太好了。
【问题讨论】:
标签:
spring
hibernate
jakarta-ee
【解决方案1】:
因为您会厌倦为整个 java 对象编写 SQL 插入/更新/选择语句,并在对象更改时保持对象 SQL 代码的形状。 JPA 实际上是 Java EE 标准的一部分。
但是,除了非常简单的情况外,它不会提供任何方法让您不知道自己在使用数据库做什么。我的经验是,任何 JPA 框架都会为性能问题跟踪和调试增加另一层复杂性。
最后,您可能最终需要了解 JPQL(JPA 的 SQL-ish 语法)如何为 JPA 提供程序(OpenJPA、HIbernate、eclipse 链接..)和数据库实现的每个组合转换为 SQL。这将是非常重要的。
如果您没有特定的性能要求并且只想要简单的对象持久性,那就去吧! Hibernate 似乎是最先进的 atm。
【解决方案2】:
为了避免为所有内容编写自己的 SQL,并[部分地]弥合对象-关系鸿沟(“深渊”)。
对于简单的需求,ORM 非常棒,可以让您不必再考虑一些 DB 问题——但需要注意的是,您仍然需要了解 DB 端实际发生的情况,以防止可能对性能造成严重影响。
对于复杂的需求,你将学会理解为什么他们将 ORM 称为“计算机科学的越南”……“我们已经吸取了越南的教训……不要去越南。”