SpringDateJpa

什么是SpringDataJpa

MyBatis:Apache的一个开源项目,上手简单,开发灵活,现在市场占有率高; 但是开发时工作量比较大,需要做很多配置,并且自己要写SQL语句。
Hibernate:一个开放源代码的对象关系映射框架,是完全面向对象的。可以使用面向对象的思路来完成数据库操作。 Hibernate是完备的ORM框架(咱们之前学习JPA,底层就是使用Hibernate完成的)。

SpringDataJpa的基本使用

  1. 引入项目中所需要的所有包(pom.xml)
  2. 配置applicationContext.xml文件
  3. 准备Domain
  4. 完成Repository的功能
  5. 完成Repository的功能

SpringDataJpa的认识与使用

了解SpringDataJpa
1.它是JPA规范的再次封装抽象,底层还是使用了Hibernate的JPA技术实现,引用JPQL的查询语句 ,是属于Spring的生成体系中的一部分。SpringDataJpa使用起来比较方便,加快了开发的效果,使开发人员不需要关心和配置更多的东西。
2.SpringDataJpa上手简单,开发效率高,对对象的支持非常好,还十分的灵活。
3.Spring Data项目是从2010年开发发展起来的,是一个用于简化数据库访问,并支持云服务的开源框架。其主要目标是使得对数据的访问变得方便快捷,并支持map-reduce框架和云计算数据服务。 Spring Data 包含多个子项目:

Commons - 提供共享的基础框架,适合各个子项目使用,支持跨数据库持久化
JPA - 简化创建 JPA 数据访问层和跨存储的持久层功能
Hadoop - 基于 Spring 的 Hadoop 作业配置和一个 POJO 编程模型的 MapReduce 作业
Key-Value - 集成了 Redis 和 Riak ,提供多个常用场景下的简单封装
Document - 集成文档数据库:CouchDB 和 MongoDB 并提供基本的配置映射和资料库支持
Graph - 集成 Neo4j 提供强大的基于 POJO 的编程模型
Graph Roo AddOn - Roo support for Neo4j
JDBC Extensions - 支持 Oracle RAD、高级队列和高级数据类型
Mapping - 基于 Grails 的提供对象映射框架,支持不同的数据库
Examples - 示例程序、文档和图数据库
Guidance - 高级文档

SpringData的结构图

在这里插入图片描述

JpaRepository的基本功能

1.普通的CRUD
2.分页排序功能
3.根据条件进行查询
4.@Query注解查询

JpaSpecificationExecutor的认识

Specification:[ˌspɛsəfɪˈkeʃən]
Executor:[ɪgˈzekjətə®]
Criteria:美 [kraɪˈtɪrɪə]
JpaSpecificationExecutor(JPA规则执行者)是JPA2.0提供的Criteria [(批评、判断等的) 标准,准则( criterion的名词复数 )
Criteria 查询:是一种类型安全和更面向对象的查询 。]API的使用封装,可以用于动态生成Query来满足我们业务中的各种复杂场景。
Spring Data JPA为我们提供了JpaSpecificationExecutor接口,只要简单实现toPredicate方法就可以实现复杂的查询。

JpaSpecificationExecutor的使用

1.单个条件的查询
2.多个条件查询
3.条件查询+分页排序

Spring Data Jpa扩展

Spring Data Jpa功能虽然已经非常强大,但是它依然满足不了咱们的需要,在很多时候,我们需要自己去对SpringDataJpa的功能进行相应的扩展(即:自定义Repository)。
1.BaseRepository接口:直接创建BaseRepository来继承JpaRepository接口
2.BaseRepositoryImpl功能实现:
定义好自定义的方法后,我们现在通过一个基本的Repository类来实现该方法:
首先添加BaseRepositoryImpl类,继承SimpleJpaRepository类,使其拥有Jpa Repository的基本方法。
我们发现Repository有两个构造函数:
SimpleJpaRepository(JpaEntityInformation entityInformation, EntityManager entityManager)
SimpleJpaRepository(Class domainClass, EntityManager em)
这里我们实现第二个构造函数,拿到domainClass和EntityManager两个对象。
3.创建自定义创建自定义RepositoryFactoryBean
接下来我们来创建一个自定义的RepositoryFactoryBean来代替默认的RepositoryFactoryBean。
RepositoryFactoryBean负责返回一个RepositoryFactory,Spring Data Jpa 将使用RepositoryFactory来创建Repository具体实现,这里我们用BaseRepositoryImpl代替SimpleJpaRepository作为Repository接口的实现。这样我们就能够达到为所有Repository添加自定义方法的目的。
我们需要覆写创建RepositoryFactory的方法:createRepositoryFactory

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值