内容简介
《SpringDataJPA从入门到精通》以SpringBoot为技术基础,从入门到精通,由浅入深地介绍SpringDataJPA的使用。有语法,有实践,有原理剖析。
《SpringDataJPA从入门到精通》分为12章,内容包括整体认识JPA、JPA基础查询方法、定义查询方法、注解式查询方法、@Entity实例里面常用注解详解、JpaRepository扩展详解、JPA的MVC扩展REST支持、DataSource的配置、乐观锁、SpEL表达式在SpringData里面的应用、SpringDataRedis实现cacheable的实践、IntelliJIDEA加快开发效率、SpringDataREST简单介绍等。
《SpringDataJPA从入门到精通》适合Java开发初学者、Java开发工程师、Java开发架构师阅读,也适合高等院校和培训学校相关专业的师生教学参考。
作者简介
张振华,先后在驴妈妈、携程、要买车等公司担任过Java高级工程师、架构师、开发主管、技术经理等职务,有丰富的电商公司的互联网工作经验。在电商公司工作期间,负责过PC站和后端服务的平台架构、实现和升级。目前从事Spring相关的Java架构工作,对Spring整个全家桶特别钟爱。从业十几年来没有离开过Java。著有图书《Java并发编程从入门到精通》。
目录
第一部分基础部分
第1章整体认识JPA
1.1市场上ORM框架比对
1.2JPA的介绍以及开源实现
1.3了解SpringData
1.3.1SpringData介绍
1.3.2SpringData的子项目
1.3.3SpringData操作的主要特性
1.4SpringDataJPA的主要类及结构图
1.5MySQL的快速开发实例
第2章JPA基础查询方法
2.1SpringDataCommon的Repository
2.2Repository的类层次关系(diagms/hierarchy/structure)
2.3CrudRepository方法详解
2.3.1CrudRepositoryinterface内容
2.3.2CrudRepositoryinterface的使用示例
2.4PagingAndSortingRepository方法详解
2.4.1PagingAndSortingRepositoryinterface内容
2.4.2PagingAndSortingRepository使用示例
2.5JpaRepository方法详解
2.5.1JpaRepository详解
2.5.2JpaRepository的使用方法
2.6Repository的实现类SimpleJpaRepository
第3章定义查询方法
3.1定义查询方法的配置方法
3.2方法的查询策略设置
3.3查询方法的创建
3.4关键字列表
3.5方法的查询策略的属性表达式
3.6查询结果的处理
3.6.1参数选择分页和排序(Pageable/Sort)
3.6.2查询结果的不同形式(List/Stream/Page/Future)
3.6.3Projections对查询结果的扩展
3.7实现机制介绍
第4章注解式查询方法
4.1@Query详解
4.1.1语法及源码
4.1.2@Query用法
4.1.3@Query排序
4.1.4@Query分页
4.2@Param用法
4.3SpEL表达式的支持
4.4@Modifying修改查询
4.5@Quer
4.6@Procedure储存过程的查询方法
4.7@NamedQueries预定义查询
4.7.1简介
4.7.2用法举例
4.7.3@NamedQuery、@Query和方法定义查询的对比
第5章@Entity实例里面常用注解详解
5.1javax.persistence概况介绍
5.2基本注解
5.2.1@Entity
5.2.2@Table
5.2.3@Id
5.2.4@IdClass
5.2.5@GeneratedValue
5.2.6@Basic
5.2.7@Transient
5.2.8@Column
5.2.9@Temporal
5.2.10@Enumerated
5.2.11@Lob
5.2.12几个注释的配合使用
5.3关联关系注解
5.3.1@JoinColumn定义外键关联的字段名称
5.3.2@OneToOne关联关系
5.3.3@OneToManyg与@ManyToOne关联关系
5.3.4@OrderBy关联查询时排序
5.3.5@JoinTable关联关系表
5.3.6@ManyToMany关联关系
5.4Leftjoin、Innerjoin与@EntityGraph
5.4.1Leftjoin与Innerjoin
5.4.2@EntityGraph
5.5关于关系查询的一些坑
第二部分晋级之高级部分
第6章JpaRepository扩展详解
6.1JpaRepository介绍
6.2QueryByExampleExecutor的使用
6.2.1QueryByExampleExecutor详细配置
6.2.2QueryByExampleExecutor的使用示例
6.2.3QueryByExampleExecutor的特点及约束
6.2.4ExampleMatcher详解
6.2.5QueryByExampleExecutor使用场景&实际的使用
6.2.6QueryByExampleExecutor的原理
6.3JpaSpecificationExecutor的详细使用
6.3.1JpaSpecificationExecutor的使用方法
6.3.2Criteria概念的简单介绍
6.3.3JpaSpecificationExecutor示例
6.3.4Specification工作中的一些扩展
6.3.5JpaSpecificationExecutor实现原理
6.4自定义Repository
6.4.1EntityManager介绍
6.4.2自定义实现Repository
6.4.3实际工作的应用场景
第7章SpringDataJPA的扩展
7.1Auditing及其事件详解
7.1.1Auditing如何配置
7.1.2@MappedSupe
7.1.3Auditing原理解析
7.1.4Listener事件的扩展
7.2@Version处理乐观锁的问题
7.3对MvcWeb的支持
7.3.1@EnableSpringDataWebSupport
7.3.2DomainClassConverter组件
7.3.3HandlerMethodArgumentResolvers可分页和排序
7.3.4@PageableDefault改变默认的page和size
7.3.5Page原理解析
7.4@EnableJpaRepositories详解
7.4.1SpringDataJPA加载Repositories配置简介
7.4.2@EnableJpaRepositories详解
7.4.3JpaRepositoriesAutoConfiguration源码解析
7.5默认日志简单介绍
7.6SpringBootJPA的版本问题
第8章DataSource的配置
8.1默认数据源的讲解
8.1.1通过三种方法查看默认的DataSource
8.1.2DataSource和JPA的配置属性
8.1.3JpaBaseConfiguration
8.1.4Configuration思路
8.2AliDruidDataSource的配置
8.3事务的处理及其讲解
8.3.1默认@Transactional注解式事务
8.3.2声明式事务
8.4如何配置多数据源
8.4.1在application.properties中定义两个DataSource
8.4.2定义两个DataSourceConfigJava类
8.5Naming命名策略详解及其实践
8.5.1Naming命名策略详解
8.5.2实际工作中的一些扩展
8.6完整的传统XML的配置方法
第三部分延展部分
第9章IntelliJIDEA与SpringJPA
9.1IntelliJIDEA概述
9.2DataBase插件
9.3Persistence及JPA相关的插件介绍
9.4IntelliJIDEA分析源码用到的视图
第10章SpringDataRedis详解
10.1Redis之Jedis的使用
10.2SpringBoot+SpringDataRedis配置
10.2.1第1步:分析一下源码
10.2.2第2步:配置方法
10.2.3第3步:调用的地方
10.2.4第4步:总结
10.2.5主要的几个类&简单用法介绍
10.3SpringDataRedis结合SpringCache配置方法
10.3.1SpringCache介绍
10.3.2SpringBoot快速开Demo
10.3.3SpringBootCache实现过程解析
10.3.4Cache和SpringDataRedis结合快速开始
10.3.5SpringBoot实现过程
第11章SpEL表达式讲解
11.1SpEL介绍
11.1.1SpEL主要特点
11.1.2使用方法
11.2SpEL的基础语法
11.2.1逻辑运算操作
11.2.2逻辑关系比较
11.2.3逻辑关系
11.2.4三元表达式&Elvis运算符
11.2.5正则表达式的支持
11.2.6Bean的引用
11.2.7List和Map的操作
11.3主要的类及其原理
11.3.1ExpressionParser
11.3.2rootobject
11.3.3EvaluationContext
11.3.4类型转换
11.3.5SpelParserConfiguration编译器配置
11.3.6表达式模板设置
11.3.7主要类关系图
11.3.8SpEL支持的一些特性
11.4Spring的主要使用场景
11.4.1SpringDataJPA中SpEL支持
11.4.2SpringCachae
11.4.3@Value
11.4.4Web验证应用场景
11.4.5总结
第12章SpringDataREST
12.1快速入门
12.1.1SpringDataREST介绍
12.1.2快速开始
12.1.3Repository资源接口介绍
12.2SpringDataREST定制化
12.2.1@RepositoryRestResource改变***Repository对应的Path路径和资源名字
12.2.2@RestResource改变SearchPath
12.2.3改变返回结果
12.2.4隐藏某些Repository、Repository的查询方法或@Entity关系字段
12.2.5隐藏Repository的CRUD方法
12.2.6自定义JSON输出
12.3SpringBoot2.0加载原理
12.4未来发展
附录1RepositoryQueryMethod关键字列表
附录2RepositoryQueryMethod返回值类型
附录3JPA注解大全
附录4Spring中涉及的注解
附录5application.properties里面关于JPA的配置大全前言/序言
前言
《Spring Data JPA从入门到精通》初衷
随着Java技术和微服务技术逐渐广泛应用,SpringCloud、SpringBoot逐渐统一Java的框架江湖。市场上的ORM框架也逐渐被人重视起来。SpringData逐渐走入Java开发者的视野,被很多架构师作为ORM框架的技术选型。市场上没有对SpringDataJPA的完整介绍。资料比较零散,很难一下子全面、深入地掌握SpringDataJPA。《Spring Data JPA从入门到精通》注重从实际出发来提高从事Java开发者的工作效率,可以作为一本很好的自我学习手册和SpringDataJPA的查阅手册。“不仅授之以鱼,还授之以渔”,不仅告诉大家是什么、怎么用,还告诉大家学习步骤、怎么学习,以及原理、使用技巧与实践。《Spring Data JPA从入门到精通》以SpringBoot为技术基础,从入门到精通,由浅入深地介绍和使用SpringDataJPA,很适合Java的初学者从此弯道超车,走上Spring全家桶学习的快车道。
“未来已经来临,只是尚未流行”
纵观市场上的ORM框架,MyBitas以灵活著称,但是要维护复杂的配置,并且不是Spring官方的天然全家桶,还得做额外的配置工作,即使是资深的架构师也得做很多封装;Hibernate以HQL和关系映射著称,但是使用起来不是特别灵活。这样SpringDataJPA来了,感觉要夺取ORM的JPA霸主地位了,它底层以Hibernate为封装,对外提供了超级灵活的使用接口,又非常符合面向对象和REST的风格,越来越多的API层面的封装都是以SpringDataJPA为基础的,感觉是架构师和开发者的福音。SpringDataJPA与SpringBoot配合起来使用具有天然的优势,你会发现越来越多的公司招聘会由传统的SSH、Spring、MyBitas技术要求逐步地变为SpringBoot、SpringCloud、SpringData等Spring全家桶技术的要求。
追本溯源
架构师在架构设计系统之前都要先设计各种业务模型、数据模型,其实在众多技术框架中,要掌握SpringBoot、SpringMVC、SpringCloud、微服务架构等,都离不开底层数据库操作层,如果我们能很好地掌握Data这层的技术要领,从下往上学习,这样可能会更好掌握一些。
《Spring Data JPA从入门到精通》特色
(1)《Spring Data JPA从入门到精通》针对Java开发者、Spring的使用者,是SpringDataJPA开发必备书籍。
(2)《Spring Data JPA从入门到精通》从介绍到使用再到原理和实践,可以作为一本很好的SpringDataJPA的实战手册。
(3)《Spring Data JPA从入门到精通》的代码清晰,迭代完整,便于全面、完整地掌握和学习JPA。
(4)《Spring Data JPA从入门到精通》注重从实战经验方面进行讲解,非常实用,一点即破。
(5)《Spring Data JPA从入门到精通》原型PPT深受同事喜爱,并在企业内部培训的时候得到了很多Java程序员的肯定。
阅读指南
《Spring Data JPA从入门到精通》以SpringBoot为开发基础和线索,大量采用了UML释义的讲解方式。《Spring Data JPA从入门到精通》分为3个部分,共12章。
(1)基础部分:整体认识JPA、JPA基础查询方法、定义查询方法、注解式查询方法、@Entity实例里面常用注解详解,了解SpringDataJPA的基本使用和语法。
(2)晋级之高级部分:JpaRepository详解、JPA的MVC扩展Rest支持、DataSource的配置、乐观锁等,了解其背后的实现动机及其原理。
(3)延展部分:SpEL表达式在SpringData里面的应用、SpringDataRedis实现cacheable的实践、IntelliJIDEA加快开发效率、SpringDataRest的介绍,直至整个SpringData的生态。
另外,由于SpringBoot2.0的版本SpringDataJPA有了一些变化,作者对SpringBoot2.0中的JPA
致谢
首先,感谢清华大学出版社各位编辑的辛勤劳动,得以让此书面世。其次,感谢家人对我的支持,特别是老婆大人在我写作过程中承担了大量的家务,比较辛苦。最后,特别感谢帮我写书评的行业技术大神们,也非常感谢日常工作中提供帮助的同事们以及技术社区的技术达人们,感谢大家提供的技术资料。
著者
2018年3月