Hibernate和Spring Data JPA有什么区别

2022-08-31 05:08:31

Hibernate和Spring Data JPA之间的主要区别是什么?我们什么时候不应该使用Hibernate或Spring Data JPA?另外,春季JDBC模板何时可能比Hibernate / Spring Data JPA表现更好?


答案 1

Hibernate是一个JPA实现,而Spring Data JPA是一个JPA数据访问抽象。Spring Data JPA在没有JPA提供程序的情况下无法工作。

Spring Data为DDD Repository模式或传统自定义实现提供了解决方案。它还可以通过方法名称约定代表您生成 JPA 查询。GenericDao

使用Spring Data,您可以使用Hibernate,EclipseLink或任何其他JPA提供程序。使用Spring或Java EE的一个非常有趣的好处是,您可以使用注释以声明方式控制事务边界。@Transactional

Spring JDBC要轻量级得多,它旨在用于本机查询,如果您只打算单独使用JDBC,那么您最好使用Spring JDBC来处理JDBC的详细程度。

因此,Hibernate和Spring Data是互补的,而不是竞争对手。


答案 2

我们在这里使用3种不同的东西:

  1. JPA :Java持久性API,它提供用于持久化,读取,管理从Java对象到数据库中的关系的数据的规范。
  2. 休眠:有各种提供程序实现 jpa。冬眠就是其中之一。所以我们还有其他供应商。但是,如果将jpa与spring一起使用,它允许您将来切换到不同的提供商。
  3. Spring Data JPA :这是jpa之上的另一层,弹簧提供使您的生活轻松。

因此,让我们了解弹簧数据jpa和spring + hibernate的工作原理 -


春季数据 JPA:

假设您正在为您的应用程序使用弹簧+休眠。现在你需要有dao接口和实现,在那里你将使用休眠的SessionFactory编写crud操作。假设您正在为 Employee 类编写 dao 类,明天在您的应用程序中,您可能需要为任何其他实体编写类似的 crud 操作。因此,我们可以在这里看到很多样板代码。

现在,Spring data jpa允许我们通过扩展其存储库(crudrepository,jparepository)来定义dao接口,因此它在运行时为您提供dao实现。您不再需要编写 dao 实现。这就是春季数据jpa如何让您的生活变得轻松。


推荐