Spring Data Jpa系列教程(一)--------入门

大渣好,我是小小书生,现在开始,我们来学习船新的一门技术,SpringDataJpa,它是一个。。额。。(我百度一下)

 

JPA(Java Persistence API)是Sun官方提出的Java持久化规范。它为Java开发人员提供了一种对象/关联映射工具来管理Java应用中的关系数据。他的出现主要是为了简化现有的持久化开发工作和整合ORM技术,结束现在Hibernate,TopLink,JDO等ORM框架各自为营的局面。值得注意的是,JPA是在充分吸收了现有Hibernate,TopLink,JDO等ORM框架的基础上发展而来的,具有易于使用,伸缩性强等优点。从目前的开发社区的反应上看,JPA受到了极大的支持和赞扬,其中就包括了Spring与EJB3.0的开发团队。

注意:JPA是一套规范,不是一套产品,那么像Hibernate,TopLink,JDO他们是一套产品,如果说这些产品实现了这个JPA规范,那么我们就可以叫他们为JPA的实现产品

Spring Data JPA 是 Spring 基于 ORM 框架、JPA 规范的基础上封装的一套JPA应用框架,可使开发者用极简的代码即可实现对数据的访问和操作。它提供了包括增删改查等在内的常用功能,且易于扩展!学习并使用 Spring Data JPA 可以极大提高开发效率!

spring data jpa让我们解脱了DAO层的操作,基本上所有CRUD都可以依赖于它来实现

好了,以上就是Spring Data JPA的介绍,现在直接开搞

-------首先在spring data jpa中基本的CRUD其实不用自己去做,你只需要

public interface UserRepository extends JpaRepository{}

这样就具备了基础的CRUD功能,而且不需要写实现类,spring-data-jpa实现了上面的能力,那他是怎么实现的呢?这里我们通过源代码的方式来呈现他的来龙去脉,这个过程中cglib发挥了杰出的作用。   在spring-data-jpa内部,有一个类,叫做

public class SimpleJpaRepository implements JpaRepository, JpaSpecificationExecutor

我们可以看到这个类是实现了JpaRepository接口的,事实上如果我们按照上面的配置,在同一个包下面有UserRepository,但是没有UserRepositoryImpl这个类的话,在运行时期UserRepository这个接口的实现就是上面的SimpleJpaRepository这个接口。而如果有UserRepositoryImpl这个文件的话,那么UserRepository的实现类就是UserRepositoryImpl,而UserRepositoryImpl这个类又是SimpleJpaRepository的子类,如此一来就很好的解决了上面的这个不用写implements的问题。我们通过阅读这个类的源代码可以发现,里面包装了entityManager,底层的调用关系是entityManager在进行CRUD。

 

-------简单查询

  Spring Data JPA的独特之处就是简单查询根本不用写实现类,直接写接口就好,它能根据你的接口去生成sql,很酷炫吧

按照方法名解析规则如下:

find+全局修饰+By+实体属性名称+限定词+连接词+(其他实体属性)+OrderBy+排序属性+排序方向

例如:

findDistinctByFirstNameIgnoreCaseAndLastNameOrderByAgeDesc(String firstName,String lastName)

(哇,好长的方法啊!!好神奇)

全局修饰符:distinct,top,first

关键词(限定词+连接词):IsNull,IsNotNull,Like,NotLike,Containing,In,NotIn,IgnoreCase,Between,Equals,

LessThan,GreaterThan,After,Before

排序方向:Asc,Desc

嵌套实体方法命名规则:

例如:

List findByAddress_ZipCode(ZipCode zipCode)

 构词法:主实体中的子实体名称+_+子实体属性名称

 

通过关键词构造方法如下:

// 对应sql:  select * from user where phone like '136%' and address like '%路%'
findByPhoneStartingWithAndAdressContaining(String phone, String address);

所有支持的关键词:

Spring Data Jpa系列教程(一)--------入门_第1张图片

Spring Data Jpa系列教程(一)--------入门_第2张图片

这张主要了解一下jpa的定义和最基础的用法。

 

你可能感兴趣的:(Spring,Data,Jpa)