JPA和hibernate以及SpringDataJPA

什么是jpa

JPA java persistence api ,为POJO(就是我们的JavaBean)提供持久化标准规范,JavaEE规范之一

主要思想,3个:

1 ORM(Object Relational Mapping)映射元数据,通过XML或注解,描述对象和表之间的关系,框架据此将实体对象持久化到数据库

       关键字:ORM映射、实体持久化

2 规范的API,通过操作实体对象,就能执行对应数据库的CRUD操作,ORM框架让开发从繁琐的JDBC和SQL代码中解脱出来

       关键字:实体对象、JDBC和SQL、解脱

3 查询语言,通过面向对象而非面向数据库的查询语言查询数据,避免程序的SQL语句紧密耦合

       关键字:面向对象查询、SQL解耦

 

JPA与ORM什么关系

l  ORM是JPA规范中的一个体现思想,JPA规范包含了ORM

l  Sun公司为了简化现有Java EE和Java SE应用的对象持久化的开发工作,整合ORM技术,结束现在Hibernate、iBATIS、TopLink等ORM框架各自为营的局面,提出了新的JPA ORM规范。

JPA的实现者(供应商):

Hibernate、OpenJPA、TopLink等

 

Hibernate和Hibernate JPA

Hibernate在JPA规范出现后,也提供了对JPA的实现,也就是说Hibernate有两套开发风格,一种我们以前学习的,另一种是JPA风格的。具体demo参考

http://www.micmiu.com/j2ee/hibernate/hibernate-jpa-demo/

 

 

 

 

 

什么是Spring Data

Spring Data 是Spring 的一个子项目(不是很成熟), 旨在统一和简化对各类型持久化存储, 而不拘泥于是关系型数据库还是NoSQL 数据存储。(野心很大)

 

无论是哪种持久化存储, 数据访问对象(或称作为DAO,即Data Access Objects)通常都会提供对单一域对象的CRUD (创建、读取、更新、删除)操作、查询方法、排序和分页方法等。

 

Spring Data则提供了基于这些层面的统一接口(CrudRepository,PagingAndSortingRepository)以及对持久化存储的实现。

 

Spring Data 包含多个子项目:

l  Commons - 提供共享的基础框架,适合各个子项目使用,支持跨数据库持久化

Hadoop - 基于 Spring 的 Hadoop 作业配置和一个 POJO 编程模型的 MapReduce 作业

l  Key-Value  - 集成了 Redis 和 Riak ,提供多个常用场景下的简单封装

l  Document - 集成文档数据库:CouchDB 和 MongoDB 并提供基本的配置映射和资料库支持

l  Graph - 集成 Neo4j 提供强大的基于 POJO 的编程模型

l  Graph Roo AddOn - Roo support for Neo4j

JDBC Extensions - 支持 Oracle RAD、高级队列和高级数据类型

JPA - 简化创建 JPA 数据访问层和跨存储的持久层功能

l  Mapping - 基于 Grails 的提供对象映射框架,支持不同的数据库

l  Examples - 示例程序、文档和图数据库

l  Guidance - 高级文档

 

(Spring Data就像一口缸,什么都想往里装,想实现完全统一的数据访问层的API)

 

 

 

 

 

 

什么是Spring Data JPA

Spring Data JPA 框架,主要针对的就是 Spring 唯一没有简化到的业务逻辑代码,至此,开发者连仅剩的实现持久层业务逻辑的工作都省了,唯一要做的,就只是声明持久层的接口,其他都交给 Spring Data JPA 来帮你完成!

 

spring data jpa、jpa以及ORM框架之间的关系

 

Spring data jpa是在JPA规范下提供了Repository层的实现,但是使用哪一种ORM需要你来决定(默认使用Hibernate JPA的实现)。虽然ORM框架都实现了JPA规范,但是在不同的ORM框架之间切换仍然需要编写不同的代码,而通过使用Spring data jpa能够方便大家在不同的ORM框架之间进行切换而不要更改代码。并且spring data jpa 对Repository层封装的很好,也省去了不少的麻烦。 

详细可参考:

http://blog.csdn.net/anxpp/article/details/51415698

https://www.cnblogs.com/dreamroute/p/5173896.html

 

posted @ 2017-11-21 17:43  阿T酱的资源与教程分享  阅读(7222)  评论(0编辑  收藏  举报