虽然不是新手,但我正在尝试学习spring框架(再次!),以确保我真的理解这一点。我对核心Spring(DI)有了一个很好的想法。现在,我专注于数据层。
我遇到过“ Spring和Hibernate ”这个词。正如我可以解释的那样,它意味着将Spring Framework与Hibernate一起用作ORM工具/ JPA提供程序。
现在我遇到了“ Spring Data JPA ”。我澄清了有关Spring Data JPA的内容,它是JPA上的一个抽象层(并且引用了Spring Data JPA使用Hibernate或任何其他JPA提供程序)。
这些条款现在一样吗?也就是说,“ Spring + hibernate ”与“ Spring Data JPA ”相同。如果没有,那么差异/相似之处是什么?
我真的很困惑很多条款/声明(如上所述)看似相似,但可能会有所不同。
答案 0 :(得分:53)
Spring-data-jpa,正如您所说,提供了更多仅仅是经典的Spring-JPA集成。使用JPA / Hibernate集成,主要是
使用Spring-data-jpa,你可以得到所有这些,加上(除其他外)
这只是一个很小的介绍。如需更多帮助,请阅读文档。
答案 1 :(得分:7)
当你谈到spring + hibernate时
hibernatesessionfactory
,打开事务和提交。每项操作的前后工作很多。hibernatetemplate
的{{1}}包装器。因此,在执行这些操作时,您不需要太在意前后代码。现在让我们谈谈spring + data jpa
hibernatesessionfactory
,spring将在运行时注入其实现。crud repository
接口的新存储库接口来实现。并且可以在整个应用程序中使用它。Repository
答案 2 :(得分:1)
我发现this link有帮助:
JPA是Java Persistence API,它是Java用于对象关系映射的标准API。
JPA只是一个规范 - 您需要实现它才能使用它。 Hibernate是JPA中最着名和最常用的实现之一,但还有其他一些,例如EclipseLink JPA。
Spring Framework是一个大型框架,可帮助您更轻松地编写企业级软件。它包含对许多Java技术的支持,包括JPA。
Spring Framework由一组项目组成,其中一个项目是Spring Data。
Spring Data的目标是使其更容易使用不同类型的数据库,从传统的关系数据库到NoSQL数据库。 Spring Data通过Spring Data JPA子项目支持JPA。
要编写使用JPA的程序,至少需要一个JPA实现,例如Hibernate。
如果您正在为您的应用程序使用Spring Framework,那么您很可能希望将Spring Data JPA与Hibernate一起使用。
答案 3 :(得分:1)
Spring Data JPA不是JPA提供程序。它是一个库/框架,在我们的JPA提供程序(如Hibernate)的顶部增加了额外的抽象层。
因此,如果没有Hibernate,EclipseLink等JPA提供程序,就无法使用Spring Data。