一、SpringDataJpa的含义:

  SpringDataJpa: 是Spring基于ORM框架、JPA规范封装的一套JPA应用框架,是SpringData中的一个子模块,可让开发者用极简的代码即可实现对数据的访问和操作。它提供了包括增删改查、排序、分页等在内的常用功能,主要针对的就是 Spring 的业务逻辑代码。

  它是JPA规范的再次封装抽象,底层还是使用了Hibernate的JPA技术实现,引用JPQL的查询语句 ,是属于Spring的生成体系中的一部分。

二、SpringDataJpa的继承结构:

  SpringDataJpa的优点:它的Dao层只需要写接口,不需要写实现类,只需要写一个接口继承JpaRepository接口即可,该接口有两个泛型<T,ID>,在Dao层接口里可以什么都不用写。

T:domain实体类类型

ID:domain实体类的主键字段类型

    

  SpringDataJpa继承结构图分析:

  1、JpaRespository、PagingAndSortingRepository、CrudRepository三个接口都添加了@NoRepositoryBean注解【只要添加这个注解,Spring在扫描到有这个注解    的接口的时候就不用生成实现类,就不用创建bean对象】。

  2、我们自定义的IEmployeeRepository接口没有添加这个注解,那么Spring在扫描到这个接口的时候,就会给这个接口创建对象,但是这个接口却没有实现类,那SpringDataJpa就会利用动态代理技术给这个接口自动生成一个实现类,然后进行动态编译、类加载、反射来创建对象,最后保存到Spring容器中,这样就不用自己手动写Dao层实现类也可以获得Dao层接口的对象,然后使用@Autowired进行自动注入了。

  3、其实SpringDataJPA内部已经写了一个实现类实现了JPARepository接口,已经实现了JpaRespository、PagingAndSortingRepository、CrudRepository这三个接口中的所有抽象方法,SpringDataJPA自动帮我们生成的实现类会自动:

    实现IEmployeeRepository接口,

    继承SimpleJapRepository类,

最终我们得到(注入)的那个对象其实本质是SimpleJapRepository类的子类对象!!!

4、 因为SpringDataJPA自动帮我们生成的类继承了SimpleJPARepository类,并且实现了IEmployeeRepository接口,所以创建对象之后就可以调用直接JpaRespository、PagingAndSortingRepository、CrudRepository这三个接口中的所有方法了,因为SimpleJPARepository类已经帮我们将所有抽象方法都实现了。

浅析SpringDataJpa继承结构的更多相关文章

  1. JavaWeb学习之Servlet(二)----Servlet的生命周期、继承结构、修改Servlet模板

    [声明] 欢迎转载,但请保留文章原始出处→_→ 文章来源:http://www.cnblogs.com/smyhvae/p/4140466.html 一.http协议回顾: 在上一篇文章中:JavaW ...

  2. QT类的继承结构

    QT类的继承结构 QT的类 core 数据集合 QString 几何类 QPoint QSize QRectangle 系统类 QColor QFont QImage QIcon QCursor QB ...

  3. (转)JavaWeb学习之Servlet(二)----Servlet的生命周期、继承结构、修改Servlet模板

    [声明] 欢迎转载,但请保留文章原始出处→_→ 文章来源:http://www.cnblogs.com/smyhvae/p/4140466.html 一.http协议回顾: 在上一篇文章中:JavaW ...

  4. Java -- 异常的捕获及处理 -- 异常类的继承结构

    7.1.3 异常类的继承结构 在整个Java的异常结构中,实际上有两个最常用的类,分别为Exception和Error,这两个类全都是Throwable的子类. ⊙ Exception : 一般标识的 ...

  5. UIView常用属性与方法/UIKit继承结构

    UIView常用属性与方法 @interface UIView : UIResponder<NSCoding, UIAppearance, UIAppearanceContainer, UIDy ...

  6. Servlet学习笔记【1】--- 背景和基础知识(CGI、Web服务器发展史、Servlet简介、任务、继承结构)

    本文主要讲Servlet的基础知识和背景知识. 1 CGI简介 CGI(Common Gateway Interface 公共网关接口)是WWW技术中最重要的技术之一,有着不可替代的重要地位.CGI是 ...

  7. Java-IO流的继承结构

    一  IO流的继承结构如下 二  字节流 1.InputStream(字节流读取数据),为抽象类,不可创建对象:其具体实现需要通过子类FileInputStream(读取文件数据).BufferedI ...

  8. 精通AngularJS(三)深入scope,继承结构,事件系统和生命周期

    深入探讨 Scope 作用域 每一个 $scope 都是类 Scope 的一个实例.类 Scope 拥有可以控制 scope 生命周期的方法,提供事件传播的能力,并支持模板渲染. 作用域的层次结构 让 ...

  9. 浅析JVM内存结构和6大区域(转)举例非常好

    内存作为系统中重要的资源,对于系统稳定运行和高效运行起到了关键的作用,Java和C之类的语言不同,不需要开发人员来分配内存和回收内存,而是由JVM来管理对象内存的分配以及对象内存的回收(又称为垃圾回收 ...

随机推荐

  1. mysql的密码管理、mysql初始密码查找、密码修改、mysql登录

    1.查询mysql的初始密码: 初始密码密码是随机产生的,每台机器产生的都不一样的 grep 'temporary password' /var/log/mysqld.log 或者 cat /var/ ...

  2. centos下kong源码安装

    参考资料: https://docs.konghq.com/install/source/ 环境准备:操作系统 centeros7.3 1 :openssl和pcre一般系统自带,如果没有可自己安装  ...

  3. Liunx学习笔记(三) 文件权限

    一.文件权限 1.查看文件权限 (1)文件权限 在 Linux 中对于文件有四种访问权限,列举如下: 可读取:r,Readable 可写入:w,Writable 可执行:x,Execute 无权限:- ...

  4. linux more-显示文件内容,每次显示一屏

    博主推荐:获取更多 linux文件内容查看命令 收藏:linux命令大全 more命令是一个基于vi编辑器文本过滤器,它以全屏幕的方式按页显示文本文件的内容,支持vi中的关键字定位操作.more名单中 ...

  5. Linux iostat-监视系统输入输出设备和CPU的使用情况

    推荐:更多linux 性能监测与优化 关注:linux命令大全 iostat命令被用于监视系统输入输出设备和CPU的使用情况.它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况.同vmsta ...

  6. lastpass密码管理工具使用教程

    现在移动互联网发展异常空气,无论访问哪个平台或者网站必须要注册账号,日子久了就会发现最痛苦的就是记住这些网站的密码.因为我们不可能将所有的网站都是设置同样的的账号密码,因为国内网站用户数据库被泄露的事 ...

  7. 第十三节:web爬虫之Redis数据存储

    下面仅仅展示Redis的set()集合存储,并不完整,后期会对Redis进行全面的介绍.... 此时数据已经存储到Redis当中

  8. Educational Codeforces Round 41 D. Pair Of Lines(961D)

    [题意概述] 给出平面上的10W个点,要求判断这些点能否被两条直线穿过,即一个点至少在一条直线上. [题解] 思路很快可以想到.取3个不共线的点,它们形成一个三角形:如果有解,其中的一条直线一定与三角 ...

  9. [bzoj1569][JSOI2008][Blue Mary的职员分配]

    Description 由于Blue Mary呕心沥血的管理,Blue Mary的网络公司蒸蒸日上.现在一共拥有了n名职员,可惜没有任何的金钱和声誉.平均每名每天职员都可以给公司带来x单位金钱或者y单 ...

  10. Spring MVC学习总结(11)——Spring MVC集成Swagger跨域问题

      <!-- CORS配置,为了让别的机器访问本机的swagger接口文档服务 -->          <dependency>              <group ...