spring data jpa 、jpa、ORM的区别

spring data jpa 、jpa、ORM的区别

引用:http://stackoverflow.com/questions/16148188/spring-data-jpa-versus-jpa-whats-the-difference

问:

我对spring-data-jpa和JPA的概念有点混淆了。我知道JPA是一种针对于持久化Java对象到关系型数据库(ORM)技术的规范,它提供了一系列的接口和其他的ORM技术,当实现了这些接口,我们就称之为是一个JPA的供应商,例如Hiberane. 所以到底什么是spring data jpa?spring data jpa是在JPA的基础上添加了更多的功能(接口),还是他就是一个JPA规范的供应商? 我看到spring data jpa简介上说,spring data jpa是为了解决dao层的问题,所以我到底怎么界定我是使用“spring data jpa + hibernate”还是只是用“hibernate”就可以了?


 

答:

正如你所说,虽然Hibernate是JPA规范的一个特定实现(这些实现通常被称为供应商),但是使用Hibernate你这种供应商会在你需要从一个供应商切换到另一个供应商的时候限制你的自由。举例:因为Hibernate有错误,所以你必须停止你的开发活动,因为hibernate在你的程序中扮演的角色非常重要。

引用 Spring Data JPA's documentation: 实现一个应用程序的DAO层通常非常麻烦。我们有太多的模板代码要写。因为大多他们并没有真正的实现面向对象或面向领域的思 想。 使用这些技术让开发人员的工作在领域模型的方面变得相对容易,然而通过模板代码来实现的数据库操作的代码量仍然相当高。所以spring的的目标数据是努力减少实现数据访问层(DAO)的代码量。

总之,它是JPA之上添加另一个抽象层,定义一个“标准化”的设计来支持你的持久层在Spring上下文。这些定义的接口提供服务框架去处理使用JPA服务的结果。 所以Spring data JPA 提供了一个定义去实现一些资源库(repositories ),这些资源库根据你提供的供应商,自己去处理JPA引擎下的东西。

个人理解:哎呀,就是spring data jpa觉得hibernate这些JPA供应商太流氓,所以就像JVM和操作系统的关系一样,构建了一套JPA的翻译器。

而ORM则只是一个工具,比如在mybatis就是一个ORM工具,JPA则是一种解决ORM的业界规范,这些规范的实现则是有明确定义的。

posted @ 2017-04-22 23:15  Tan1  阅读(136)  评论(0编辑  收藏  举报