我对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’指令有什么不同?
发布于 2013-04-22 21:36:42
我看到了Spring,JPA可以绕过存储库(DAO层:如果我没记错的话)。所以我的意思是,使用'Spring JPA + Hibernate‘和直接使用'Hibernate’有什么不同?
正如您所说,JPA是一种规范,而Hibernate是该规范的特定实现(这些实现通常被称为提供者)。通过使用Hibernate,您将自己与该提供商捆绑在一起,从而限制了您在需要时切换到另一个选项的自由(例如,您希望使用EclipseLink或ObjectDB,因为Hibernate有一个错误会停止您的开发过程)。
引用's文档:
相当长一段时间以来,
实现应用程序的数据访问层一直很麻烦。必须编写太多的样板代码。领域类是贫血的,并且没有以真正的面向对象或领域驱动的方式进行设计。
使用这两种技术可以让开发人员更轻松地处理富领域模型的持久性问题。尽管如此,实现存储库的样板代码的数量仍然相当高。因此,Spring数据的存储库抽象的目标是显著减少为各种持久性存储实现数据访问层的工作量。
总而言之,它是在JPA之上添加了另一层抽象层,某种程度上定义了一个基于标准的设计,以支持Spring上下文中的持久层。这些已定义的接口(Spring已知)提供框架使用JPA处理的服务,以提供结果。您可以通过Spring扫描项目并找到它的方式来定义存储库:
<repositories base-package="com.acme.repositories" />因此,允许您在容器的上下文中或容器外部使用它。
现在到底什么是
。Spring,JPA在JPA上添加了更多的功能(接口),它仍然只是指定的,还是它也是一个JPA提供者?
Spring Data JPA提供了一个定义,通过引用JPA规范,使用您定义的提供程序来实现幕后支持的存储库。
发布于 2013-04-22 21:34:33
JavaEE,有时也称为
,是一个使用Java Platform,Standard Edition (JavaSE)和Java Platform,Enterprise Edition(JavaEE)管理应用程序中的关系数据的Java框架。
本文中的持久性包括三个方面:
javax.persistence包中定义。Java Persistence Query Language (
Spring Spring Data JPA是
数据项目的一部分,它使得基于JPA的存储库的实现变得更容易。
功能:
支持基于
构建存储库
的透明审计
的能力
bootstrap time时@Query注释查询的
的支持
通过引入@EnableJpaRepositories实现基于

发布于 2020-05-12 02:27:24
JPA
JPA是一种规范,它标准化了将Java对象映射到关系数据库系统的方式。作为一种规范,JPA由一组接口组成,比如EntityManagerFactory、EntityManager和帮助您将Java实体对象映射到数据库表的注释。
有几个JPA提供者可以使用,比如HIbernate、EclipseLink或Open JPA。
Spring Data JPA
Spring Data JPA是一种JPA数据访问抽象。就像JPA一样,Spring Data JPA没有JPA提供程序就不能工作。
Spring Data JPA为DDD Repository pattern或DAO (Data Acess Object) pattern提供了一种解决方案。它还可以通过方法名称约定代表您生成JPA查询。
Spring Data JPA可以与Hibernate、Eclipse Link或任何其他JPA提供程序一起使用。使用Spring或Java的一个非常有趣的好处是,您可以使用@Transactional注释以声明方式控制事务边界。
https://stackoverflow.com/questions/16148188
复制相似问题