Spring Data-JPA与JPA:有什么区别?
我对Spring Data-JPA和JPA之间的区别有些困惑。 我知道关于JPA,它是使用stream行的ORM技术将Java对象持久化到关系数据库的规范。也就是说,JPA提供了接口和其他ORM技术,实现了被称为JPA提供者的接口,例如Hibernate。
现在到底什么是Spring Data JPA。 Spring Data JPA是否通过JPA添加了一些更多的function(接口),并且仍然只是指定的,或者它也是JPA提供者?
我看到Spring Data JPA在存储库(DAO层:如果我没有错的话)工作。 所以我的意思是使用“Spring Data JPA + Hibernate”或仅使用“Hibernate”指导是如何不同?
我看到了Spring,JPA在库的周围工作(DAO层:如果我没有错的话)。 所以我的意思是,如何使用“Spring JPA + Hibernate”或直接使用“Hibernate”是不同的?
正如你所说, JPA是一个规范,而Hibernate是该规范的特定实现(这些实现通常被称为提供者 )。 通过使用Hibernate,您可以将自己绑定到该提供程序上,以便在需要时限制您自由切换到另一个选项(例如,由于Hibernate有一个可阻止开发过程的bug,因此您希望使用EclipseLink或ObjectDB)。
引用Spring Data JPA的文档:
实现应用程序的数据访问层已经有一段时间了。 必须编写太多的样板代码。 领域类贫乏,并没有被devise成真正的面向对象或领域驱动的方式。
使用这两种技术使开发人员在富域模型的持久性方面变得更容易。 不过,实现知识库的样板代码量还是相当高的。 因此,Spring Data存储库抽象的目标是大大减less为各种持久存储实现数据访问层的工作量。
综上所述,JPA增加了另外一层抽象层,就是定义一个基于标准的devise来支持Spring上下文中的持久层 。 那些已定义的接口(Spring已知)提供了框架使用JPA处理结果的服务。 您可以通过Spring可以扫描项目并find它的方式定义一个存储库:
<repositories base-package="com.acme.repositories" />
因此,允许您在容器的上下文中或外部使用它。
现在到底什么是Spring,JPA。 是spring,JPA已经添加了一些更多的JPAfunction(接口),仍然只是指定或它也是一个JPA提供程序?
Spring Data JPA提供了一个定义来实现通过引用JPA规范,使用您定义的提供程序引擎支持的存储库。
Java持久性API(有时称为JPA)是一种Java框架,用于pipe理使用Java平台标准版(JavaSE)和Java平台企业版(JavaEE)的应用程序中的关系数据。
在这方面的坚持包括三个方面:
-
API本身,在
javax.persistence
包中定义。 -
Java持久性查询语言(JPQL)。
-
对象关系元数据。
Spring Data JPA是Spring Data项目的一部分,它使得实现基于JPA的存储库更容易。
特征:
- 基于Spring和JPA构build存储库的完善支持
- 支持QueryDSL谓词,从而支持types安全的JPA查询
- 域类的透明审计
- 分页支持,dynamic查询执行,集成自定义数据访问代码的能力
- 在引导时validation
@Query
注释的查询 - 支持基于XML的实体映射
- 引入
@EnableJpaRepositories
基于JavaConfig的存储库configuration
- 如何在JPA中复制Hibernate的saveOrUpdate?
- 使用Hibernate进行不区分大小写的search
- 何时使用Hibernate投影?
- Hibernate用ID来查询外键字段
- 在@Column JPA annontation上设置length属性时会做些什么?
- Hibernate 3.5中的JPA 2.0 @OrderColumn注释
- hibernate错误:org.hibernate.NonUniqueObjectException:具有相同标识符值的不同对象已经与会话关联
- JPQL构造函数expression式 – org.hibernate.hql.ast.QuerySyntaxException:表未映射
- Spring Boot + JPA:忽略列名称注释