繁体   English   中英

Java Spring hibernate和Spring中的JPA

[英]Java Spring hibernate and JPA in Spring

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

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

如果有人帮助我站起来,我真的很感激

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

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

Spring只是框架的集合。 其中一个框架支持使用Hibernate 例如,在使用数据库时,通常需要在事务中包装多个操作。 如果您只使用Hibernate ,则必须不断重写代码以包装您的操作,但Spring提供了为您执行此操作的事务管理支持。

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

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

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

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

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

来自Pro Spring 3(Clarence Ho):

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

关于你的另一个问题

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM