JPA与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'指导它是不同的?
我看到Spring,JPA围绕仓库(DAO层:如果我没有错)。 所以我的意思是它是如何使用'Spring JPA + Hibernate'或仅直接使用'Hibernate'?
正如你所说的, JPA是一个规范,而Hibernate是该规范的特定实现(这些实现通常被称为提供者)。 通过使用Hibernate,您可以将自己绑定到该提供程序,从而限制您在需要时切换到另一个选项的自由(例如,您想使用EclipseLink或ObjectDB,因为Hibernate有一个可阻止开发过程的错误)。
引用Spring Data JPA的文档:
在一段时间内实现应用程序的数据访问层很麻烦。 必须编写太多的样板代码。 领域类是贫乏的,并没有被设计成真正的面向对象或领域驱动的方式。
使用这两种技术使得开发人员在富域模型的持久性方面变得更容易。 尽管如此,实现知识库的样板代码数量仍然相当高。 因此,Spring Data存储库抽象化的目标是大大减少为各种持久性存储实现数据访问层的工作量。
综上所述,它是JPA的另一层抽象层,它定义了一种基于标准的设计,以支持Spring上下文中的持久层。 那些已定义的接口(Spring已知)提供了框架使用JPA处理结果的服务。 您可以通过Spring可以扫描项目并找到它的方式定义一个存储库:
<repositories base-package="com.acme.repositories" />
因此,允许您在容器或其外部的环境中使用它。
现在到底什么是Spring,JPA。 是Spring,JPA已经通过JPA添加了一些更多的功能(接口),并且仍然只是指定的,或者它也是JPA提供者?
Spring Data JPA提供了一个定义来实现通过引用JPA规范引擎支持的存储库,使用您定义的提供程序。
Java持久性API(有时称为JPA)是一种Java框架,用于管理使用Java平台标准版(JavaSE)和Java平台企业版(JavaEE)的应用程序中的关系数据。
在这方面的坚持包括三个方面:
API本身,在javax.persistence
包中定义。
Java持久性查询语言(JPQL)。
对象关系元数据。
Spring Data JPA是Spring Data项目的一部分,它可以更容易地实现基于JPA的存储库。
特征:
@Query
注释查询 @EnableJpaRepositories
基于JavaConfig的存储库配置 JPA是Java持久性API,它是Java用于对象关系映射的标准API。
JPA只是一个规范 - 你需要实现它才能使用它。 Hibernate是JPA最知名和最常用的实现之一,但也有其他的,比如EclipseLink JPA。
Spring框架是一个可帮助您轻松编写企业级软件的大型框架。 它包含对许多Java技术的支持,包括JPA。
Spring框架由一系列项目组成,其中一个项目是Spring Data。
Spring Data的目标是使它更容易处理从传统关系数据库到NoSQL数据库的各种数据库。 Spring Data通过Spring Data JPA子项目支持JPA。
要编写一个使用JPA的程序,至少需要一个JPA实现,比如Hibernate。
如果您为您的应用程序使用Spring Framework,那么您最可能希望将Spring Data JPA与Hibernate一起使用。
这个链接应该有助于更好地理解这个概念:
https://spring.io/blog/2011/02/10/getting-started-with-spring-data-jpa/
链接地址: http://www.djcxy.com/p/44083.html