2013-02-20 109 views
1

在spring中使用hibernate顶部的JPA有什么好处。我已经看到了几个项目和几个主题,他们使用JPA + Hibernate + Spring的谷歌,但我找不到它的好解释。Java在Spring Spring中使用hibernate和JPA

还单独何时何时使用JPA以及何时使用Hibernate。

我很感激,如果有人帮我下架

+0

[为什么Java EE 6比Spring更好? (Arun Gupta,迈尔斯去...)](https://blogs.oracle.com/arungupta/entry/why_java_ee_6_is) – 2013-02-20 19:26:02

+0

最后部分的参考:http://stackoverflow.com/q/9881611/422353 – madth3 2013-02-20 19:44:19

回答

1

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

这种标准化(JPA)提供了一种方法,JPA持久性供应商,如休眠,OpenJPA中,等等

从临春3(克拉伦斯何)之间进行切换:

JPA定义了通用JPA持久性提供者应该实现的概念,注释,接口以及其他 服务(所有这些服务都被置于javax.persistance包中)。当编程为 JPA标准时,开发人员可以随意切换底层 提供程序,就像切换到另一个符合JEE标准的应用程序服务器,即JEE标准开发的应用程序一样。

关于你的另一个问题

也可以单独何时使用JPA以及何时使用Hibernate。

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

Hibernate缩小了RDBMS中关系数据结构和Java中面向对象模型之间的差距。这个成熟且经过测试的库允许您使用对象专注于业务逻辑,并节省编写与数据库交互所需的锅炉代码的时间。

1

JPA只是一个API,Java Persistence API。它是使用持久性服务的接口。它本身并没有做任何事情,只是提供了元数据。

HibernateJPA的实现。它是一个ORM框架。它提供了实际的持久性服务。它通过读取JPA元数据(注释)来完成此操作。

Spring只是一个框架集合。其中一个框架支持使用Hibernate。例如,在使用数据库时,您通常想要在事务中包装多个操作。如果你只使用Hibernate,你将不得不重写代码来包装你的操作,但Spring提供事务管理支持,它为你做。

1

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

您可以使用Hibernate并继续使用其专有的非标准API,但没有真正的优势,因为您可以使用标准API执行相同的操作,您可以在其他项目中使用,使用一个不同的实现。

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