当前位置: 首页 > 面试题库 >

JPA和Spring Data JPA有什么区别?

琴琪
2023-03-14
问题内容

我对Spring Data-JPA和JPA之间的区别感到困惑。我了解JPA,它是使用流行的ORM技术将Java对象持久化到关系html" target="_blank">数据库的规范。

换句话说,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 是该规范的特定实现(这些实现通常称为 Providers
)。通过使用Hibernate,您将自己与该提供程序联系在一起,从而限制了您在需要时自由切换到另一个选项的自由(例如,您想使用EclipseLink或ObjectDB来代替,因为Hibernate有一个会中断您的开发过程的错误)。

引用 Spring Data JPA 的文档:

实现应用程序的数据访问层已经很长一段时间了。必须编写太多样板代码。域类是贫乏的,不是以真实的面向对象或域驱动的方式设计的。

结合使用这两种技术,就富域模型的持久性而言,使开发人员的工作变得更加轻松。尽管如此,实现存储库的样板代码数量仍然非常高。因此,Spring
Data存储库抽象的目标是显着减少为各种持久性存储实现数据访问层的工作量。

概括起来,它是在JPA之上添加了另一层抽象,这种抽象是一种定义基于标准的设计以在Spring上下文中支持 持久层
。这些定义的接口(Spring已知)提供框架使用JPA处理以​​提供结果的服务。您可以使用Spring可以扫描项目并找到它的方式定义存储库:

<repositories base-package="com.acme.repositories" />

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

现在,JPA正是Spring。Spring,JPA是在JPA之上添加了更多功能(接口),仍然仅被指定还是JPA提供者吗?

Spring Data JPA通过使用定义的提供程序来引用JPA规范,从而提供了实现内部支持的存储库的定义。



 类似资料:
  • 我对Spring Data-JPA和JPA之间的区别有点困惑。我知道JPA是一种使用流行的ORM技术将Java对象持久化到关系数据库的规范。 Spring Data JPA是在JPA之上添加了一些更多的功能(接口),还是只指定它还是一个JPA提供程序? 我看到Spring Data JPA围绕存储库工作(DAO层:如果我没有错的话)。那么,我的意思是,使用“Spring Data JPA+Hibe

  • 问题内容: 我知道JPA 2是一个规范,而Hibernate是ORM的工具。另外,我了解到Hibernate具有比JPA 2更多的功能。但是从实际的角度来看,真正的区别是什么? 我有使用iBatis的经验,现在我想学习Hibernate或JPA2。我拿起Pro JPA2书籍,并且一直指“ JPA提供者”。例如: 如果您认为某个功能应该被标准化,则应该大声疾呼并向您的JPA提供者提出要求 这使我感到

  • 问题内容: Hibernate和Spring Data JPA之间的主要区别是什么?什么时候不应该使用Hibernate或Spring Data JPA?另外,Spring JDBC模板何时可以比Hibernate / Spring Data JPA更好地执行? 问题答案: Hibernate是一个JPA实现,而Spring Data JPA是一个JPA数据访问抽象。没有JPA提供程序,Sprin

  • 问题内容: 之间有什么区别 和 此示例来自Java EE教程,但我仍然不了解详细信息。 问题答案: 从这里: 级联删除 用CascadeType.REMOVE(或CascadeType.ALL,包括REMOVE)标记引用字段表示删除操作应自动级联到该字段引用的实体对象(多个实体对象可以被collection字段引用): 移除孤儿 JPA 2支持附加的,更积极的删除级联模式,可以使用@OneToOn

  • Hibernate和Spring数据JPA之间的主要区别是什么? 我们什么时候不应该使用Hibernate或Spring数据JPA? 此外,何时SpringJDBC模板可以比Hibernate和SpringDataJPA性能更好?

  • 问题内容: 两者都意味着空间,但是有什么区别吗? 问题答案: 一个是不间断空间,另一个是常规空间。不间断的空格表示该行不应在该点处换行,就像它不会在一个单词的中间换行一样。 此外,正如斯文德(Svend)在其评论中指出的那样,不间断的空间不会崩溃。