一、SpringDataJpa的意义:

SpringDataJpa: 是Spring根据ORM结构、JPA标准封装的一套JPA运用结构,是SpringData中的一个子模块,可让开发者用极简的代码即可完成对数据的拜访和操作。它供给了包含增修改查、排序、分页等在内的常用功用,首要针对的便是 Spring 的事务逻辑代码。

它是JPA标准的再次封装笼统,底层仍是运用了Hibernate的JPA技能完成,引证JPQL的查询句子 ,是归于Spring的生成系统中的一部分。

二、SpringDataJpa的承继结构:

SpringDataJpa的长处:它的Dao层只需要写接口,不需要写完成类,只需要写一个接口承继JpaRepository接口即可,该接口有两个泛型,在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类现已帮咱们将一切笼统办法都完成了。

欢迎作业一到五年的Java工程师朋友们参加Java程序员开发: 721575865

群内供给免费的Java架构学习材料(里边有高可用、高并发、高功能及分布式、Jvm功能调优、Spring源码,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点的架构材料)合理运用自己每一分每一秒的时刻来学习提高自己,不要再用"没有时刻“来粉饰自己思想上的懒散!趁年青,用力拼,给未来的自己一个告知!

推荐阅读