1

在 hibernate 和 spring 的顶部使用 JPA 有什么好处。我在谷歌上看到了很少的项目和主题,他们使用 JPA + Hibernate + Spring,但我找不到很好的解释。

还分别何时使用 JPA 和何时使用 Hibernate。

如果有人帮助我理解,我真的很感激

4

3 回答 3

1

JPA只是一个 API Java Persistence API,. 它是使用持久化服务的接口。就其本身而言,它除了提供元数据之外什么都不做。

HibernateJPA. 它是一个ORM框架。它提供了实际的持久化服务。它通过读取JPA元数据(注释)来做到这一点。

Spring只是框架的集合。它的框架之一支持使用Hibernate. 例如,在使用数据库时,您通常希望将多个操作包装在一个事务中。如果您只使用Hibernate,您将不得不不断重写代码来包装您的操作,但Spring提供了为您执行此操作的事务管理支持。

于 2013-02-20T19:26:35.117 回答
1

JPA 和 Hibernate 是一回事。JPA 是 API(接口、抽象类、规范),Hibernate 是这个 API 的实现之一。

您可以使用 Hibernate 并继续使用其专有的非标准 API,但没有真正的优势,因为您可以使用标准 API 做同样的事情,您将能够在其他项目中使用不同的实现。

Spring 被用作另一个级别,提供依赖注入、声明式事务和更多服务。

于 2013-02-20T19:27:30.367 回答
1

JPA使用标准化的 ORM 编程模型简化了实体持久性。换句话说,它抽象了持久层,以减少应用程序代码和 ORM 提供者之间的依赖关系。

这种标准化 (JPA) 为您提供了一种在 JPA 持久性提供程序(例如 Hibernate、OpenJPA 等)之间切换的方法。

来自 Pro Spring 3 (Clarence Ho):

JPA 定义了 JPA 持久性提供者应该实现的一组通用概念、注释、接口和其他服务(所有这些都放在 javax.persistance 包下)。当按照 JPA 标准进行编程时,开发人员可以随意切换底层提供者,就像切换到另一个 JEE 兼容的应用服务器,用于在 JEE 标准上开发的应用程序一样。

关于你的另一个问题

还分别何时使用 JPA 和何时使用 Hibernate。

JPA以增加复杂性为代价来促进模块化。这种权衡是否值得取决于您项目的复杂性。

Hibernate closes the gap between the relational data structure in the RDBMS and the Object Oriented model in Java. This mature and tested library allows you to focus on your business logic using objects and saving time writing boiler-plate code needed to interact with databases.

于 2013-02-20T19:29:24.643 回答