SpringDataJPA的基本结构

SpringDataJPA的基本结构

1. 什么是JPA?

JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。
Sun引入新的JPA ORM规范出于两个原因:其一,简化现有Java EE和Java SE应用开发工作;其二,Sun希望整合ORM技术,实现天下归一。
2. 什么是SpringData?

Spring Data是一个用于简化数据库访问,并支持云服务的开源框架。其主要目标是使得对数据的访问变得方便快捷。

可以极大的简化JPA的写法,可以在几乎不用写实现的情况下,实现对数据的访问和操作。除了CRUD外,还包括如分页、排序等一些常用的功能。
  
3. 什么是SpringData JPA?
  
Spring Data JPA介绍
  可以理解为JPA规范的再次封装抽象,底层还是使用了Hibernate的JPA技术实现,引用JPQL(Java Persistence Query Language)查询语言,属于Spring整个生态体系的一部分。随着Spring Boot和Spring Cloud在市场上的流行,Spring Data JPA也逐渐进入大家的视野,它们组成有机的整体,使用起来比较方便,加快了开发的效率,使开发者不需要关心和配置更多的东西,完全可以沉浸在Spring的完整生态标准实现下。JPA上手简单,开发效率高,对对象的支持比较好,又有很大的灵活性,市场的认可度越来越高。
  JPA是Java Persistence API的简称,中文名为Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。
  JPA包括以下3方面的内容:
  (1)一套API标准。在javax.persistence的包下面,用来操作实体对象,执行CRUD操作,框架在后台替代我们完成所有的事情,开发者从烦琐的JDBC和SQL代码中解脱出来。
  (2)面向对象的查询语言:Java Persistence QueryLanguage(JPQL)。这是持久化操作中很重要的一个方面,通过面向对象而非面向数据库的查询语言查询数据,避免程序的SQL语句紧密耦合
  (3)ORM(object/relational metadata)元数据的映射。JPA支持XML和JDK5.0注解两种元数据的形式,元数据描述对象和表之间的映射关系,框架据此将实体对象持久化到数据库表中。

4. SpringData JPA提供了哪些接口?
基本接口

        Repository:最顶层的接口也是标志接口,目的是为了统一所有Repository的类型,且能让组件扫描的时候自动识别。
        CrudRepository :是Repository的子接口,封装了对数据库的CRUD操作。
        PagingAndSortingRepository:是CrudRepository的子接口,对数据的查询提供了分页和排序的功能,非常方便。
        JpaRepository:是PagingAndSortingRepository的子接口,将上面三个接口的返回值做了优化,方便调用时返回结果集。
        JpaSpecificationExecutor:**需要注意的是**该接口不能单独使用,如上图所示该接口并未直接或间接继承 Repository所以该接口不是 Repository的实现接口,没有对应的操作数据库的方法,必须和以上三个接口组合使用,主要用非主键查询,以及一些别的查询,下文再继续阐述。
        Specification:是Spring Data JPA中 JpaSpecificationExecutor 提供的一个查询规范,用于复杂查询,Specification是一个接口,要想使用就必须实现它,日常使用主要是通过new Specification(){匿名内部类的方式,回调里面的Predicate方法}实现对数据库的复杂操作。

5. Spring Data JPA的优点?(仅代表个人观点)
我也是刚刚接触Spring Data JPA,对这个技术该不是很了解,自我感觉优缺参半。Spring Data JPA的是在hiernate JPA的基础上进行的进一步优化,对于简单的查询非常方便,但是多表联查,显得就比较繁琐,不过省去了接口实现层,还是比较方便的,当然要是使用自定以的Repository接口的话,还是要写接口实现层的,但是最后还是交由要由Spring Data JPA进行方法的实现。

6. 总结
接下来我会对每一个接口进行相应的联系测试,以上仅代表个人观点,有不当之处,还请各位大神,指正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值