第1章 对象映射 1
1.1 信息持久化 1
1.1.1 使用文件系统 2
1.1.2 使用对象序列化 2
1.1.3 使用数据库 3
1.2 对象持久化 6
1.2.1 软件的三层结构(Three-Layer Architecture) 7
1.2.2 对象持久化解决方案 9
1.3 对象关系映射(ORM) 20
1.3.1 ORM面对的问题 21
1.3.2 Hibernate的优势 25
1.3.3 Hibernate3与Java Persistence API(JPA) 26
1.4 小结 27
第2章 JAVA SE 5的新特性 28
2.1 枚举类型(Enumerated Types) 28
2.2 泛型(Generics) 30
2.2.1 泛型和多态 32
2.2.2 使用通配符 33
2.3 Auto-boxing和Unboxing 35
2.4 注释(Annotations) 37
2.5 静态导入(Static Imports) 39
2.6 增强的for循环-for/in循环 39
2.7 小结 40
第3章 使用工具软件进行项目开发 42
3.1 安装JDK 5.0 42
3.2 下载Hibernate 42
3.3 安装ANT 43
3.4 安装JUnit 45
3.5 安装HSQLDB 46
3.6 安装EcIipse 47
3.7 安装Quantum DB插件管理HSQLDB 49
3.8 小结 50
第4章 Hibernate应用实例 51
4.1 建立项目 51
4.1.1 设置开发环境 51
4.1.2 选择需要的类库 51
4.1.3 在Eclipse里配置项目 53
4.1.4 配置Quantum DB管理数据库 54
4.2 用例类图 54
4.3 编写第一个类 56
4.3.1 什么是POJO 56
4.3.2 第一个POJO类 57
4.4 配置 59
4.4.1 编写映射文件 59
4.4.2 配置Hibernate 60
4.4.3 配置HSQLDB 63
4.4.4 配置log4J 63
4.5 编写测试代码 65
4.5.1 测试驱动开发(TDD) 66
4.5.2 Junit 4 67
4.5.3 测试存取Book对象 68
4.5.4 更新已存在的Book信息 72
4.5.5 从数据库中删除Book信息 73
4.5.6 查询Book 74
4.6 开发封装类 75
4.6.1 开发HibernateService Provider类 75
4.6.2 开发BookDAO类 77
4.7 使用Quantum DB查看数据库 79
4.8 编写ANT构建文件 81
4.8.1 运行ANT 82
4.8.2 examples项目的构建文件 82
4.8.3 构建并测试项目 88
4.9 重构Book类 89
4.9.1 使用映射文件的缺点 89
4.9.2 使用注释重构Book类 90
4.9.3 注释替代映射文件 91
4.9.4 重构封装类 92
4.9.5 为Book类添加继承和关联 93
4.9.6 抛弃映射文件 99
4.10 优化构建环境 104
4.10.1 以内存模式自动运行HSQLDB 104
4.10.2 把ANT与项目构建环境进行整合 104
4.11 小结 106
第5章 配置Hibernate 107
5.1 核心类 107
5.1.1 初始化类 107
5.1.2 数据访问类 113
5.2 两种配置方式 113
5.2.1 使用Java属性文件加编码方式配置 113
5.2.2 使用XML文件配置 119
5.2.3 比较两种配置方式 122
5.3 配置属性 122
5.3.1 配置数据源 122
5.3.2 配置SQL方言 124
5.3.3 配置事务 125
5.3.4 其他可选配置 126
5.4 配置日志 127
5.5 小结 127
第6章 基本实体类映射 128
6.1 两种映射元数据 128
6.1.1 XML映射文件 128
6.1.2 映射注释 130
6.2 基本映射 133
6.2.1 定义实体类 133
6.2.2 映射表格 135
6.2.3 映射表格列 136
6.2.4 定义乐观锁 139
6.2.5 定义暂态属性 141
6.2.6 映射基本数据类型 142
6.2.7 嵌入式组件映射 149
6.2.8 多表映射 153
6.3 映射标识符 156
6.3.1 标识符生成策略 157
6.3.2 映射联合主键 163
6.4 小结 168
第7章 高级实体类映射 169
7.1 关联类映射 169
7.1.1 单向一对一 172
7.1.2 双向一对一 176
7.1.3 单向多对一 178
7.1.4 单向一对多 179
7.1.5 双向一对多 183
7.1.6 单向多对多 186
7.1.7 双向多对多 188
7.2 映射集合 191
7.2.1 List<E> 192
7.2.2 Map<K,V> 193
7.3 继承类映射 196
7.3.1 单个表 197
7.3.2 一类一表 200
7.3.3 子类一表 202
7.3.4 使用@MappedSuperClass注释 204
7.4 小结 205
第8章 Hibernate映射信息扩展 206
8.1 映射集合 206
8.1.1 映射基本类集合 206
8.1.2 映射高级集合 216
8.1.3 映射基元数据集合 218
8.2 自定义类映射 220
8.3 标识符生成器 226
8.4 小结 228
第9章 持久化对象、事务和缓存 229
9.1 持久化对象的生命周期 229
9.2 对象识别 230
9.2.1 标识符 234
9.2.2 属性 235
9.2.3 业务键属性 237
9.2.4 标识符加业务键属性 238
9.2.5 区别对待暂态和游离态对象 240
9.3 事务 242
9.3.1 ACID 243
9.3.2 事务隔离等级(Transaction Isolation Level) 244
9.3.3 Transaction接口 245
9.3.4 数据锁定 247
9.3.5 死锁 248
9.4 缓存 249
9.4.1 一级缓存 250
9.4.2 二级缓存 251
9.4.3 使用二级缓存 253
9.4.4 查询缓存 255
9.5 小结 256
第10章 Hibernate Session,事件和拦截器 258
10.1 Hibernate Session 258
10.1.1 管理对象 258
10.1.2 其他方法 273
10.1.3 Session的生存期 274
10.2 事件 275
10.2.1 事件系统构架 275
10.2.2 get()与load()生于同根 276
10.2.3 save()、update()和saveOrUpdate()师出同门 278
10.2.4 扩展 283
10.3 Interceptor 286
10.4 小结 289
第11章 Criterion框架 290
11.1 SQL简介 290
11.1.1 查询子句 291
11.1.2 子查询 294
11.1.3 联合查询 294
11.2 使用Criteria进行查询 296
11.2.1 Criterion构架 296
11.2.2 创建Criteria查询 298
11.2.3 使用Restrictions类为查询增加限制 303
11.2.4 使用Projections类实现投影查询 306
11.2.5 联合查询 309
11.2.6 举例查询(QBE) 310
11.2.7 设置模式和查询相关属性 312
11.2.8 DetachedCriteria 315
11.3 小结 316
第12章 HQL和Hibernate Query接口 317
12.1 Hibernate Query Language 319
12.1.1 基本查询 320
12.1.2 where子句 322
12.1.3 子查询 324
12.1.4 联合查询 324
12.1.5 动态实例查询 329
12.2 Hibernate Query接口 330
12.2.1 Hibernate风格的参数绑定 330
12.2.2 JDBC风格的参数绑定 333
12.2.3 处理结果集 333
12.2.4 n+1查询问题 334
12.2.5 调用命名查询 341
12.3 使用SQL进行查询 343
12.4 批量数据处理 345
12.4.1 使用StatelessSession 345
12.4.2 使用Session 346
12.5 过滤器 347
12.5.1 过滤查询对象 348
12.5.2 过滤集合对象 350
12.6 JPA Query接口 351
12.7 小结 353
第13章 以JPA方式使用Hibernate 354
13.1 Hibernate EntityManager内部构架 354
13.1.1 主要的JPA类和接口 354
13.1.2 Hibernate扩展接口 357
13.1.3 Hibernate实现类 358
13.1.4 以JPA方式运行Hibernate 360
13.2 重构Book应用实例 363
13.2.1 重构测试类 363
13.2.2 重构BookDAO类 366
13.2.3 重构ServiceProvider类 368
13.2.4 映射文件 371
13.3 小结 372
附录A 使用Hudson持续集成 373
A.1 使用持续集成软件 374
A.2 使用Hudson 375
A.2.1 配置源代码管理器 378
A.2.2 配置Poll SCM 379
A.2.3 配置Ant target 379
A.2.4 配置email提醒 380
附录B 使用随书所附源代码 385
B.1 光盘结构 385
B.1.1 example项目 386
B.1.2 jpaproject项目 388
B.1.3 测试代码 389
B.2 构建和测试项目 390
专业词汇翻译(按英文字母排序) 392
参考书目 394
网上资料 395