一,SpringData的概述
官方定义: Spring Data的使命是为数据访问提供熟悉且一致的基于Spring的编程模型,同时仍保留底层数据存储的特殊特性。它使数据访问技术,关系数据库和非关系数据库, map-reduce框架和基于云的数据服务变得简单易用,这是一个伞形项目,其中包含许多特定于给定数据库的子项目
SpringData的巨大优势:统一数据访问层,它提供一致的基于Spring的编程模板
对于每一种特定持久化存储,DAO通常需要为不同的存储库(如:Mysql,Redis等)提供不同的CRUD持久化操作,比如:操作Mysql使用jdbc或者框架mybatis等,操作Redis使用Jedis,这些适配操作的框架或工具都需要单独学习,十分繁琐,而SpringData为这些持久性存储以及特定实现提供了统一的通用接口和模板
SpringData的目的:统一和简化对不同类型持久性存储(关系性数据库和NoSql数据库)的访问和操作
① 不使用SpringData操作存储
不同的存储工具提供单单独的适配包,我们提供导入这些依赖,操作存储,这些存储适配依赖没有统一的标准,还需要单独进行学习和操作
② 使用SpringData进行操作
SpringData提供了统一的接口和模板
SpringData支持的持久层技术非常多:
- Spring Data Common:用于支持每个Spring Data模块的核心公共模块
- Spring Data JDBC:对JDBC的Spring Data存储库支持
- Spring Data MongoDB:基于Spring的对象文档支持MongoDB存储库
- Spring Data Redis:从Spring应用程序轻松配置和访问Redis
- Spring Data Rest:将Spring Data存储库导入超媒体驱动的RestFul资源
- ……………………
SpringData的主要特征:
1),模板制作
MongoTemplate,RedisTemplate,JdbcTemplate……模板提供存储特定操作,例如保存,更新和删除单个记录或用于执行查询映射
注:Spring Data JPA不提供模板,因为Jpa实现本身在Jdbc API之上,JPA的EntityManager是模板的对应物,异常转换由存储库实现处理
2),对象/数据存储映射
通过xml或注解进行对象关系映射
3),Repository支持
Repository提供了最基本的数据访问功能,其几个子接口则拓展了一些功能
Repository:仅仅是一个标识,表明任何继承它的均为仓库接口类(继承关系如下)
- CrudRepository:继承Repository,实现了一组CRUD相关的方法
- PagingAndSortingRepository:继承了CrudRepository实现了分页排序相关方法
- JpaRepsitory:继承PagingAndSortingRepository,实现了JPA规范的方法
二,JPA的介绍及和JDBC的关系
JPA:基于ORM理念的持久化技术标准,它提供了一系列的规范接口(由Sun在JDK1.5提出
作用:
- 简化持久化的开发工作,让开发者从繁琐的JDBC和SQL代码中解脱出来,直接面向对象持久化操作
- SUN希望持久化技术能够统一,如果基于JPA进行持久化能够随意的切换数据库
基于JPA的框架技术有:
- Hibernate
- OpenJPA
- EclipseLink
- ……
注:Mybatis也是ORM框架,但它并不是基于JPA
该规范提供了:
- ORM映射元数据:JPA支持XML和注解两种元数据的形式,元数据描述对象和表之间的映射关系,框架将实体类对象持久化到数据库表中,如:@Entity,@Table,@ID与@Column等注解
- JPA的API:用来操作实体对象,执行CRUD操作,框架在后台替我们完成所以事情,如:entityManager.merge(T t)
- JPQL查询语句:通过面向对象而非面向数据库的查询数据,避免程序的SQL语句紧密耦合,如:from Student s where s.name = ?
JPA和JDBC的异同:
同:
- 都跟数据库操作有关,JPA是JDBC的升华
- JDBC和JPA都是一组规范化接口
- 都是由SUN官方推出的
异:
- JDBC是基于不同关系型数据库驱动统一的接口标准,JPA是基于ORM思想
- JDBC使用SQL语句和数据库通信,JPA有面向对象方式,通过ORM框架来生成SQL
- JPA建立在JDBC的基础上,具体的数据库操作依赖于JDBC
注:JPA本质上是一种基于ORM思想建立在JDBC之上的规范,它没有具体的实现,但提供了一系列规范化接口,具体的实现由其他框架完成
JPA出现的目的:解决操作原生JDBC面临的一系列问题问题
原生JDBC开发时的问题:
- 需要面向SQL语句来操作数据库,开发人员学习成本高
- 数据库的移植性不高,不同数据库的SQL语句无法通用
- java对象和数据库类型的映射是个麻烦事
三,JPA和Hibernate,Mybatis的关系
JPA是一套基于ORM的规范,而Hibernate实现了JPA规范
本质上Hibernate就是实现了JPA接口的ORM框架
JPA并不具备操作数据库的能力,而是依赖它的实现,如:Hibernate等
四,SpringData JPA的概述
SpringData JPA只是SpringData系列的一部分,可以更轻松实现基于JPA的Repositories,主要处理基于JPA的数据访问层的增强支持,它使构建使用数据访问技术的Spring驱动的应用程序变得更容易
SpringData JPA的简介:SpringData JPA是Spring提供的一套简化JPA开发的框架,按照约定的规则进行[方法命名]写dao层接口,就可以在不写接口实现的情况下,实现对数据库的访问和操作,同时提供了很多除了CRUD之外的功能,如分页,排序,复杂查询等等
SpringData JPA让开发人员解脱了DAO层的操作,基本上所有CRUD都可以依赖于它来实现,在实际的工作中,推荐SpringData JPA + ORM(如:Hibernate)完成操作,这样在切换不同的ORM框架时提供了极大的方便
Comments | NOTHING
Warning: Undefined variable $return_smiles in /www/wwwroot/wql_luoqin_ltd/wp-content/themes/Sakura/functions.php on line 1109