Spring Data-JPA与JPA:有什么区别?

DHR*_*SAL 137 java orm hibernate jpa-2.0 spring-data-jpa

我对Spring Data-JPA和JPA之间的区别感到有点困惑.我知道JPA它是使用流行的ORM技术将Java对象持久化到关系数据库的规范,即换句话说,JPA提供接口和其他ORM技术,实现称为JPA提供程序的接口,例如Hibernate.

现在究竟是什么Spring Data JPA.Spring Data JPA是否在JPA上增加了一些功能(接口),仍然只是指定它还是JPA提供者?

我看到Spring Data JPA围绕存储库工作(DAO层:如果我没有错).所以我的意思是使用'Spring Data JPA + Hibernate'或仅使用'Hibernate'指导它是如何不同的?

Fri*_*itz 120

我看到Spring,JPA围绕存储库工作(DAO层:如果我没有错).所以我的意思是使用'Spring JPA + Hibernate'或直接使用'Hibernate'是多么不同?

正如您所说,JPA是一个规范,Hibernate是该规范的特定实现(这些实现通常称为Providers).通过使用Hibernate,您可以将自己绑定到该提供程序,从而限制您在需要时自由切换到另一个选项(例如,您希望使用EclipseLink或ObjectDB,因为Hibernate有一个停止开发过程的错误).

引用Spring Data JPA文档:

在相当长的一段时间内,实现应用程序的数据访问层一直很麻烦.必须编写太多的样板代码.域类是贫血的,并没有以真实的面向对象或域驱动的方式设计.

使用这两种技术可以使开发人员在富域模型的持久性方面更加轻松.尽管如此,实现存储库的样板代码量仍然很高.因此,Spring Data的存储库抽象的目标是减少为各种持久性存储实现数据访问层的工作量.

总而言之,它是在JPA之上添加另一层抽象,类似于定义基于标准的设计以支持Spring上下文中的持久层.这些定义的接口(Spring称为)提供框架使用JPA处理结果的服务.您可以通过Spring可以扫描项目并找到它来定义存储库:

<repositories base-package="com.acme.repositories" />
Run Code Online (Sandbox Code Playgroud)

因此,允许您在容器的上下文中或在容器的外部使用它.

现在Spring究竟是什么,JPA.是Spring,JPA在JPA上增加了一些功能(接口),仍然只是指定它还是JPA提供者?

Spring Data JPA提供了一个定义来实现通过引用JPA规范使用您定义的提供程序支持的存储库.


Shr*_*ari 33

Java Persistence API(有时称为JPA)是一个Java框架,用于管理使用Java平台,标准版(JavaSE)和Java平台企业版(JavaEE)的应用程序中的关系数据.

在这方面的坚持包括三个方面:

  • API本身,在javax.persistence包中定义.

  • Java持久性查询语言(JPQL).

  • 对象关系元数据.

    在此输入图像描述

Spring Data JPA是Spring Data项目的一部分,可以更轻松地实现基于JPA的存储库.

特征:

  • 基于Spring和JPA构建存储库的复杂支持
  • 支持QueryDSL谓词,从而支持类型安全的JPA查询
  • 透明审核域类
  • 分页支持,动态查询执行,集成自定义数据访问代码的能力
  • @Query在引导时验证带注释的查询
  • 支持基于XML的实体映射
  • 基于JavaConfig的存储库配置介绍 @EnableJpaRepositories

    在此输入图像描述


Vla*_*cea 25

日本特许经营协会

JPA 是一种规范,用于将 Java 对象映射到关系数据库系统的方式标准化。仅仅是一个规范,JPA是由一组接口,喜欢EntityManagerFactoryEntityManager和注释,帮助您映射Java的实体对象到数据库表。

您可以使用多个 JPA 提供程序,例如 HIbernate、EclipseLink 或 Open JPA。

弹簧数据 JPA

Spring Data JPA 是一个 JPA 数据访问抽象。就像 JPA 一样,Spring Data JPA 不能在没有 JPA 提供程序的情况下工作。

Spring Data JPA 为DDDRepository模式DAO (Data Acess Object) pattern. 它还可以通过方法名称约定代表您生成 JPA 查询。

Spring Data JPA 可以与 Hibernate、Eclipse Link 或任何其他 JPA 提供程序一起使用。使用 Spring 或 Java EE 的一个非常有趣的好处是您可以使用@Transactional注释以声明方式控制事务边界。