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