描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787302499480
《Spring Data JPA从入门到精通》分为12章,内容包括整体认识JPA、JPA基础查询方法、定义查询方法、注解式查询方法、@Entity实例里面常用注解详解、JpaRepository扩展详解、JPA的MVC扩展REST支持、DataSource的配置、乐观锁、SpEL表达式在Spring Data里面的应用、Spring Data Redis实现cacheable的实践、IntelliJ IDEA加快开发效率、Spring Data REST简单介绍等。
《Spring Data JPA从入门到精通》适合Java开发初学者、Java开发工程师、Java开发架构师阅读,也适合高等院校和培训学校相关专业的师生教学参考。
目 录
部分
基础部分
第1章 整体认识JPA 3
1.1 市场上ORM框架比对 3
1.2
JPA的介绍以及开源实现 4
1.3 了解Spring Data 5
1.3.1
Spring Data介绍 5
1.3.2
Spring Data的子项目 5
1.3.3
Spring Data操作的主要特性 6
1.4
Spring Data JPA的主要类及结构图 7
1.5
MySQL的快速开发实例 8
第2章 JPA基础查询方法 13
2.1
Spring Data Common的Repository 13
2.2
Repository的类层次关系 (diagms/hierarchy/structure) 14
2.3
CrudRepository方法详解 16
2.3.1
CrudRepository interface内容 17
2.3.2
CrudRepository interface的使用示例 18
2.4
PagingAndSortingRepository方法详解 19
2.4.1
PagingAndSortingRepository interface 内容 19
2.4.2
PagingAndSortingRepository使用示例 20
2.5
JpaRepository方法详解 21
2.5.1
JpaRepository详解 21
2.5.2
JpaRepository的使用方法 21
2.6
Repository的实现类SimpleJpaRepository 22
第3章 定义查询方法 24
3.1 定义查询方法的配置方法 24
3.2 方法的查询策略设置 25
3.3 查询方法的创建 26
3.4 关键字列表 27
3.5 方法的查询策略的属性表达式 29
3.6 查询结果的处理 29
3.6.1
参数选择分页和排序(Pageable/Sort) 29
3.6.2
查询结果的不同形式(List/Stream/Page/Future) 30
3.6.3
Projections对查询结果的扩展 31
3.7 实现机制介绍 34
第4章 注解式查询方法 36
4.1
@Query详解 36
4.1.1
语法及源码 36
4.1.2
@Query用法 37
4.1.3
@Query排序 38
4.1.4
@Query分页 39
4.2
@Param用法 40
4.3
SpEL表达式的支持 40
4.4
@Modifying修改查询 41
4.5
@QueryHints 42
4.6
@Procedure储存过程的查询方法 43
4.7
@NamedQueries预定义查询 44
4.7.1
简介 44
4.7.2
用法举例 45
4.7.3
@NamedQuery、@Query和方法定义查询的对比 45
第5章 @Entity实例里面常用注解详解 46
5.1
javax.persistence概况介绍 46
5.2 基本注解 48
5.2.1
@Entity 48
5.2.2
@Table 49
5.2.3
@Id 50
5.2.4
@IdClass 50
5.2.5
@GeneratedValue 51
5.2.6
@Basic 52
5.2.7
@Transient 52
5.2.8
@Column 52
5.2.9
@Temporal 53
5.2.10
@Enumerated 53
5.2.11
@Lob 54
5.2.12
几个注释的配合使用 54
5.3 关联关系注解 55
5.3.1
@JoinColumn 定义外键关联的字段名称 55
5.3.2
@OneToOne关联关系 55
5.3.3
@OneToManyg与@ManyToOne关联关系 56
5.3.4
@OrderBy关联查询时排序 57
5.3.5
@JoinTable关联关系表 58
5.3.6
@ManyToMany关联关系 59
5.4
Left join、Inner join与@EntityGraph 60
5.4.1
Left join与Inner join 60
5.4.2
@EntityGraph 61
5.5 关于关系查询的一些坑 61
第二部分
晋级之高级部分
第6章 JpaRepository扩展详解 65
6.1
JpaRepository介绍 65
6.2
QueryByExampleExecutor的使用 66
6.2.1
QueryByExampleExecutor详细配置 66
6.2.2
QueryByExampleExecutor的使用示例 67
6.2.3
QueryByExampleExecutor的特点及约束 68
6.2.4
ExampleMatcher详解 68
6.2.5
QueryByExampleExecutor使用场景&实际的使用 70
6.2.6
QueryByExampleExecutor的原理 73
6.3
JpaSpecificationExecutor的详细使用 74
6.3.1
JpaSpecificationExecutor的使用方法 74
6.3.2
Criteria概念的简单介绍 75
6.3.3
JpaSpecificationExecutor示例 76
6.3.4
Specification工作中的一些扩展 78
6.3.5
JpaSpecificationExecutor实现原理 80
6.4 自定义Repository 81
6.4.1
EntityManager介绍 81
6.4.2
自定义实现Repository 82
6.4.3
实际工作的应用场景 84
第7章 Spring Data JPA的扩展 95
7.1
Auditing及其事件详解 96
7.1.1
Auditing如何配置 96
7.1.2
@MappedSuperclass 98
7.1.3
Auditing原理解析 99
7.1.4
Listener事件的扩展 101
7.2
@Version处理乐观锁的问题 103
7.3 对MvcWeb的支持 105
7.3.1
@EnableSpringDataWebSupport 105
7.3.2
DomainClassConverter组件 105
7.3.3
HandlerMethodArgumentResolvers可分页和排序 106
7.3.4
@PageableDefault改变默认的page和size 108
7.3.5
Page原理解析 108
7.4
@EnableJpaRepositories详解 110
7.4.1
Spring Data JPA加载Repositories配置简介 110
7.4.2
@EnableJpaRepositories详解 111
7.4.3
JpaRepositoriesAutoConfiguration源码解析 113
7.5 默认日志简单介绍 114
7.6
Spring Boot JPA的版本问题 117
第8章 DataSource的配置 119
8.1 默认数据源的讲解 120
8.1.1
通过三种方法查看默认的DataSource 120
8.1.2
DataSource和JPA的配置属性 123
8.1.3
JpaBaseConfiguration 124
8.1.4
Configuration思路 126
8.2
AliDruidDataSource的配置 126
8.3 事务的处理及其讲解 129
8.3.1
默认@Transactional注解式事务 129
8.3.2
声明式事务 133
8.4 如何配置多数据源 134
8.4.1
在application.properties中定义两个DataSource 134
8.4.2
定义两个DataSourceConfigJava类 135
8.5
Naming命名策略详解及其实践 137
8.5.1
Naming命名策略详解 137
8.5.2
实际工作中的一些扩展 139
8.6 完整的传统XML的配置方法 140
第三部分
延展部分
第9章 IntelliJ IDEA与Spring JPA 145
9.1
IntelliJ IDEA概述 145
9.2
DataBase插件 146
9.3
Persistence及JPA相关的插件介绍 150
9.4
IntelliJ IDEA分析源码用到的视图 155
第10章 Spring Data Redis详解 158
10.1
Redis 之 Jedis 的使用 158
10.2
Spring Boot Spring Data Redis配置 164
10.2.1
第1步:分析一下源码 165
10.2.2
第2步:配置方法 168
10.2.3
第3步:调用的地方 170
10.2.4
第4步:总结 171
10.2.5
主要的几个类&简单用法介绍 171
10.3
Spring Data Redis结合Spring Cache配置方法 172
10.3.1
Spring Cache 介绍 172
10.3.2
Spring Boot快速开始Demo 176
10.3.3
Spring Boot Cache 实现过程解析 177
10.3.4
Cache和Spring Data Redis结合快速开始 179
10.3.5
Spring Boot实现过程 182
第11章 SpEL表达式讲解 189
11.1
SpEL介绍 189
11.1.1
SpEL主要特点 190
11.1.2
使用方法 190
11.2
SpEL的基础语法 191
11.2.1
逻辑运算操作 192
11.2.2
逻辑关系比较 193
11.2.3
逻辑关系 194
11.2.4
三元表达式& Elvis运算符 194
11.2.5
正则表达式的支持 195
11.2.6
Bean的引用 195
11.2.7
List 和 Map 的操作 196
11.3
主要的类及其原理 197
11.3.1
ExpressionParser 197
11.3.2
root object 198
11.3.3
EvaluationContext 199
11.3.4
类型转换 199
11.3.5
SpelParserConfiguration 编译器配置 200
11.3.6
表达式模板设置 201
11.3.7
主要类关系图 202
11.3.8
SpEL支持的一些特性 202
11.4
Spring的主要使用场景 203
11.4.1
Spring Data JPA中SpEL支持 203
11.4.2
Spring Cachae 204
11.4.3
@Value 204
11.4.4
Web 验证应用场景 205
11.4.5
总结 205
第12章 Spring Data REST 206
12.1
快速入门 206
12.1.1 Spring Data REST介绍 206
12.1.2
快速开始 208
12.1.3
Repository资源接口介绍 215
12.2
Spring Data REST定制化 216
12.2.1
@RepositoryRestResource改变***Repository对应的Path路径和资源名字 216
12.2.2
@RestResource 改变SearchPath 217
12.2.3
改变返回结果 218
12.2.4
隐藏某些Repository、Repository的查询方法或@Entity关系字段 219
12.2.5
隐藏Repository的CRUD方法 219
12.2.6
自定义JSON输出 220
12.3
Spring Boot 2.0加载原理 220
12.4
未来发展 222
附录1 Repository Query Method 关键字列表 223
附录2 Repository Query Method 返回值类型 226
附录3 JPA注解大全 228
附录4 Spring中涉及的注解 232
附录5 application.properties 里面关于JPA的配置大全 235
前 言
本书初衷
随着Java技术和微服务技术逐渐广泛应用,Spring Cloud、Spring Boot逐渐统一Java的框架江湖。市场上的ORM框架也逐渐被人重视起来。Spring Data逐渐走入Java开发者的视野,被很多架构师作为ORM框架的技术选型。市场上没有对Spring Data JPA的完整介绍。资料比较零散,很难一下子全面、深入地掌握Spring Data JPA。本书注重从实际出发来提高从事Java开发者的工作效率,可以作为一本很好的自我学习手册和Spring Data JPA的查阅手册。“不仅授之以鱼,还授之以渔”,不仅告诉大家是什么、怎么用,还告诉大家学习步骤、怎么学习,以及原理、使用技巧与实践。全书以Spring Boot为技术基础,从入门到精通,由浅入深地介绍和使用Spring Data JPA,很适合Java的初学者从此弯道超车,走上Spring全家桶学习的快车道。
“未来已经来临,只是尚未流行”
纵观市场上的ORM框架,MyBitas以灵活著称,但是要维护复杂的配置,并且不是Spring官方的天然全家桶,还得做额外的配置工作,即使是资深的架构师也得做很多封装;Hibernate以HQL和关系映射著称,但是使用起来不是特别灵活。这样Spring Data JPA来了,感觉要夺取ORM的JPA霸主地位了,它底层以Hibernate为封装,对外提供了超级灵活的使用接口,又非常符合面向对象和REST的风格,越来越多的API层面的封装都是以Spring Data JPA为基础的,感觉是架构师和开发者的福音。Spring Data JPA与Spring Boot配合起来使用具有天然的优势,你会发现越来越多的公司招聘会由传统的SSH、Spring、MyBitas技术要求逐步地变为Spring Boot、Spring Cloud、Spring Data等Spring 全家桶技术的要求。
追本溯源
架构师在架构设计系统之前都要先设计各种业务模型、数据模型,其实在众多技术框架中,要掌握Spring Boot、Spring MVC、Spring Cloud、微服务架构等,都离不开底层数据库操作层,如果我们能很好地掌握Data这层的技术要领,从下往上学习,这样可能会更好掌握一些。
本书特色
(1)本书针对Java开发者、Spring的使用者,是Spring Data JPA开发书籍。
(2)本书从介绍到使用再到原理和实践,可以作为一本很好的Spring Data JPA的实战手册。
(3)本书的代码清晰,迭代完整,便于全面、完整地掌握和学习JPA。
(4)本书注重从实战经验方面进行讲解,非常实用,一点即破。
(5)本书原型PPT深受同事喜爱,并在企业内部培训的时候得到了很多Java程序员的肯定。
阅读指南
本书以Spring Boot为开发基础和线索,大量采用了UML释义的讲解方式。本书分为3个部分,共12章。
(1)基础部分:整体认识JPA、JPA基础查询方法、定义查询方法、注解式查询方法、@Entity实例里面常用注解详解,了解Spring Data JPA的基本使用和语法。
(2)晋级之高级部分:JpaRepository详解、JPA的MVC扩展Rest支持、DataSource的配置、乐观锁等,了解其背后的实现动机及其原理。
(3)延展部分:SpEL表达式在Spring Data里面的应用、Spring Data Redis实现cacheable的实践、IntelliJ IDEA加快开发效率、Spring Data Rest的介绍,直至整个Spring Data的生态。
另外,由于Spring Boot 2.0的版本Spring Data JPA有了一些变化,作者对Spring Boot 2.0中的JPA也做了一些总结,作为本书的配套阅读内容。
评论
还没有评论。