java JPA和Spring数据JPA之间有什么区别?
我对Spring数据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”有什么不同
# 1 楼答案
JPA
JPA规范规范了Java对象映射到关系数据库系统的方式。作为一个规范,JPA由一组接口组成,比如
EntityManagerFactory
、EntityManager
,以及帮助您将Java实体对象映射到数据库表的注释有几个JPA提供者,比如HIbernate、EclipseLink或Open JPA,您可以使用它们
Spring数据JPA
Spring数据JPA是一种JPA数据访问抽象。与JPA一样,没有JPA提供商,Spring Data JPA也无法工作
Spring数据JPA为DDD ^{} pattern 或^{} 提供了一个解决方案。它还可以通过方法名约定代表您生成JPA查询
Spring Data JPA可以与Hibernate、Eclipse Link或任何其他JPA提供商一起使用。使用Spring或JavaEE的一个非常有趣的好处是,可以使用
@Transactional
注释以声明方式控制事务边界# 2 楼答案
市场营销。春季生命周期遵循一种修辞模式,即Java项目X是邪恶的,然后意识到它是必要的,然后重新命名并声称是它的发明者
# 3 楼答案
本文中的持久性包括三个方面:
API本身,在
javax.persistence
包中定义Java持久性查询语言(JPQL)
对象关系元数据
功能:
@Query
带注释查询的验证@EnableJpaRepositories
# 4 楼答案
正如您所说,JPA是一个规范,而Hibernate是该规范的一个特定实现(这些实现通常被称为提供者)。通过使用Hibernate,您可以将自己绑定到该提供商,从而限制了您在需要时切换到另一个选项的自由(例如,您希望使用EclipseLink或ObjectDB,因为Hibernate有一个错误,会中断您的开发过程)
引用Spring Data JPA的文档:
总之,它是在JPA的基础上添加了另一层抽象,定义了一种基于标准的设计,以支持Spring环境中的持久层。这些定义的接口(Spring已知)提供了框架使用JPA处理的服务,以服务于结果。您可以用Spring扫描项目并找到它的方式定义存储库:
因此,允许您在容器上下文中或容器外部使用它
Spring Data JPA提供了一个定义,通过引用JPA规范,使用您定义的提供程序来实现后台支持的存储库