Hibernate 和 Spring-JPA 的区别是什么

Hibernate 和 Spring 数据 JPA 的主要区别是什么?什么时候不应该使用 Hibernate 或 Spring 数据 JPA?另外,may Spring JDBC 模板何时能比 Hibernate/Spring Data JPA 表现得更好?


Hibernate 是 JPA 实现,而 springdatajpa 是 JPA 数据访问抽象。Spring 数据为 GenericDao 自定义实现提供了一个解决方案。它还可以通过方法名约定代表您生成 JPA 查询。
对于 Spring 数据,您可以使用 Hibernate、Eclipse Link 或任何其他 JPA 提供者。一个非常有趣的好处是,您可以使用 @Transactional 注释声明性地控制事务边界。
Spring JDBC 更轻量级,它是用于本机查询的,如果您只打算单独使用 JDBC,那么最好使用 springjdbc 来处理 JDBC 的详细信息。
因此,Hibernate 和 Spring 数据是互补的,而不是竞争对手。


我们在这里使用了三种不同的方法:

JPA:Java persistence api,它提供了从 Java 对象到数据库中的关系的持久化、读取和管理数据的规范。

Hibernate:有很多实现 jpa 的提供者。冬眠就是其中之一。所以我们还有其他供应商。但如果将 jpa 与 spring 结合使用,则可以在将来切换到不同的提供者。

Spring Data JPA:这是 Spring 提供的 JPA 之上的另一层,它可以让您的生活变得轻松。

所以让我们了解一下 spring 数据 jpa 和 spring+hibernate 是如何工作的:

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

现在 Spring data jpa 允许我们通过扩展其存储库(crudrepository,jparepository)来定义 dao 接口,以便在运行时为您提供 dao 实现。您不再需要编写 dao 实现了,这就是 SpringDataJPA 让您的生活变得简单的原因。

  
    展开阅读全文