Hibernate和Spring Data JPA有什么区别?

Hibernate和Spring数据Jpa的主要区别是什么? 在什么情况下,我们不应该使用Hibernate或Spring Data JPA。 另外当Spring JDBC模板可能比Hibernate / spring数据jpa更有效

Hibernate是一个JPA实现,而Spring Data JPA是一个JPA数据访问抽象。 Spring Data为GenericDao自定义实现提供了一个解决scheme。 它也可以通过方法名称约定代表JPA查询。

使用Spring Data,您可以使用Hibernate,Eclipse Link或任何其他JPA提供程序。 一个非常有趣的好处是你可以使用@Transactional注解来声明性地控制事务边界 。

Spring JDBC更加轻量级,它只适用于原生查询,如果你只打算单独使用JDBC,那么最好使用Spring JDBC并且克服JDBC冗长。

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

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

  1. JPA:Java persistence api,它提供了从java对象到数据库中关系的持久化,读取和pipe理数据的规范。
  2. Hibernate:有实现jpa的各种提供者。 hibernate是其中之一。 所以我们也有其他的提供者。 但是如果使用jpa和spring,它可以让你在将来切换到不同的提供者。
  3. Spring Data JPA:这是jpa顶部的另一个层,弹簧提供给你的生活很简单。 那么让我们来了解spring数据jpa和spring + hibernate是如何工作的。

Spring数据JPA:

假设你正在为你的应用程序使用spring + hibernate。 现在你需要有dao接口和实现,你将使用Hibernate的SessionFactory来编写crud操作。 假设你正在为Employee类写dao类,明天在你的应用程序中,你可能需要为其他实体编写类似的crud操作。 所以有很多样板代码可以在这里看到。

现在,Spring数据jpa允许我们通过扩展其存储库(crudrepository,jparepository)来定义dao接口,以便在运行时为您提供dao实现。 你不需要再写dao的实现。那怎么弹簧数据jpa让你的生活变得轻松。