dao层继承jparepository怎么⽤_浅析SpringDataJpa继承结构⼀、SpringDataJpa的含义:
SpringDataJpa: 是Spring基于ORM框架、JPA规范封装的⼀套JPA应⽤框架,是SpringData中的⼀个⼦模块,可让开发者⽤极简的代码即可实现对数据的访问和操作。它提供了包括增删改查、排序、分页等在内的常⽤功能,主要针对的就是 Spring 的业务逻辑代码。
它是JPA规范的再次封装抽象,底层还是使⽤了Hibernate的JPA技术实现,引⽤JPQL的查询语句 ,是属于Spring的⽣成体系中的⼀部分。
⼆、SpringDataJpa的继承结构:
SpringDataJpa的优点:它的Dao层只需要写接⼝,不需要写实现类,只需要写⼀个接⼝继承JpaRepository接⼝即可,该接⼝有两个泛型,在Dao层接⼝⾥可以什么都不⽤写。
T:domain实体类类型
ID:domain实体类的主键字段类型
SpringDataJpa继承结构图分析:
jpa mybatis1、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等多个知识点的架构资料)合理利⽤⾃⼰每⼀分每⼀秒的时间来学习提升⾃⼰,不要再⽤"没有时间“来掩饰⾃⼰思想上的懒惰!趁年轻,使劲拼,给未来的⾃⼰⼀个交代!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论