Hibernate 和 Spring Data JPA 有什么区别

新手上路,请多包涵

Hibernate 和 Spring Data JPA 之间的主要区别是什么?

我们什么时候不应该使用 Hibernate 或 Spring Data JPA?

另外,Spring JDBC 模板什么时候可以比 Hibernate 和 Spring Data JPA 执行得更好?

原文由 hard coder 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 655
2 个回答

Hibernate 是一个 JPA 实现,而 Spring Data JPA 是一个 JPA 数据访问抽象。如果没有 JPA 提供程序,Spring Data JPA 将无法工作。

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

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

Spring JDBC 更轻量级,它旨在用于本机查询,如果您只想单独使用 JDBC,那么最好使用 Spring JDBC 来处理 JDBC 的冗长问题。

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

原文由 Vlad Mihalcea 发布,翻译遵循 CC BY-SA 4.0 许可协议

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

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

因此,让我们了解 spring data jpa 和 spring + hibernate 是如何工作的——


春季数据 JPA:

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

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

原文由 Bhagwati Malav 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题