第1章 对象持久化基础 1
1.1 企业级应用中的数据持久化需求 1
1.2 软件层次体系结构 2
1.3 对象持久化技术概览 4
1.3.1 Java对象序列化 5
1.3.2 使用JDBC 6
1.3.3 使用JDO 8
1.3.4 实体EJB 8
1.3.5 对象关系映射 13
1.4 对象关系映射模型 13
1.5 小结 14
第2章 初识Hibernate 15
2.1 引入Hibernate 15
2.2 沟通对象模型和关系模型 16
2.2.1 应用的域对象模型 16
2.2.2 将对象映射到关系 18
2.3 配置Hibernate 23
2.3.1 连接数据库 23
2.3.2 纳入持久化类 24
2.4 使用Hibernate操作数据库 25
2.4.1 使用ThreadLcal控制Session 25
2.4.2 建立数据库结构 28
2.4.3 使用Session操作数据库 30
2.5 在应用中使用Hibernate 34
2.5.1 编写DAO实现 34
2.5.2 在Web应用中使用Hibernate 37
2.6 小结 40
第3章 Hibernate体系架构 42
3.1 Hibernate体系架构 42
3.1.1 Hibernate架构概述 42
3.1.2 Hibernate运行时架构 43
3.1.3 Hibernate基本组件接口 46
3.2 Hibernate实现 47
3.2.1 Hibernate的生命周期 47
3.2.2 Hibernate中对象的状态 49
3.3 小结 49
第4章 对象标识符 50
4.1 关系型数据库主键生成机制 50
4.1.1 序列生成主键 51
4.1.2 自动增长的主键 52
4.2 识别Java对象 53
4.2.1 引用比较 53
4.2.2 内容比较 54
4.3 Hibernate对象标识符 56
4.4 标识符生成器 58
4.5 使用内置标识符生成器 61
4.5.1 assigned标识符生成器 61
4.5.2 increment标识符生成器 63
4.5.3 identity标识符生成器 65
4.5.4 sequence标识符生成器 67
4.5.5 hilo标识符生成器 70
4.5.6 uuid标识符生成器 72
4.5.7 guid标识符生成器 74
4.5.8 native标识符生成器 76
4.6 组合标识符 78
4.6.1 嵌入式组合标识符 78
4.6.2 映射式组合标识符 80
4.7 小结 83
第5章 配置Hibernate 84
5.1 Hibernate配置 84
5.1.1 Hibernate配置方式 84
5.1.2 配置属性 89
5.2 屏蔽底层数据库细节 89
5.2.1 SQL语言标准 89
5.2.2 Hibernate方言机制 91
5.2.3 使用Hibernate内置方言 92
5.3 输出Hibernate运行时信息 93
5.4 小结 97
第6章 Hibernate映射类型 98
6.1 Java数据类型 98
6.2 SQL数据类型 100
6.3 Hibernate映射类型 101
6.4 Hibernate内置映射类型 102
6.4.1 数据类型映射 102
6.4.2 字符映射类型 104
6.4.3 时间日期映射类型 105
6.4.4 其他映射类型 107
6.5 自定义映射类型 111
6.5.1 自定义映射类型接口 112
6.5.2 单字段自定义映射类型 113
6.5.3 多字段自定义映射类型 116
6.6 小结 125
第7章 对象关系映射 126
7.1 一对一映射 126
7.1.1 单向关联 127
7.1.2 双向关联 130
7.1.3 使用连接表的关联 131
7.2 一对多映射 133
7.2.1 单向关联 133
7.2.2 双向关联 136
7.2.3 使用连接表的关联 137
7.3 多对多映射 139
7.4 集合类映射 141
7.4.1 集合类映射基础 142
7.4.2 高级集合映射 145
7.5 组件映射 146
7.6 继承映射 149
7.7 小结 153
第8章 使用Hibernate操作对象 154
8.1 对象状态 154
8.1.1 瞬时态 154
8.1.2 持久态 154
8.1.3 脱管态 155
8.2 数据操作接口 157
8.2.1 持久化对象 158
8.2.2 装载对象 159
8.2.3 修改对象 160
8.2.4 删除对象 162
8.2.5 查询对象 162
8.2.6 级联操作 165
8.3 小结 177
第9章 Hibernate查询语言 178
9.1 HQL基础 178
9.2 过滤条件 189
9.3 连接查询 203
9.3.1 对象关联与表连接 204
9.3.2 内连接 210
9.3.3 外连接 213
9.4 聚集函数与分组 222
9.5 多态查询 228
9.5.1 Java中的多态 228
9.5.2 多态查询 232
9.6 子查询 235
9.7 查询技巧 241
9.8 小结 248
第10章 条件查询 250
10.1 条件查询简单实例 250
10.2 过滤结果集 251
10.2.1 比较运算 255
10.2.2 限定取值范围 258
10.2.3 模糊匹配查询 259
10.2.4 逻辑运算 261
10.3 结果集排序 264
10.4 关联查询 265
10.5 聚合与分组 268
10.6 离线与子查询 272
10.7 小结 274
第11章 Native SQL查询 275
11.1 简单实例 275
11.2 Native SQL应用程序接口 276
11.3 命名查询 278
11.3.1 返回类型的定义 281
11.3.2 使用存储过程 283
11.4 小结 285
第12章 事务和并发 286
12.1 数据库事务 286
12.1.1 数据库事务 287
12.1.2 事务的特征 289
12.1.3 事务类别 290
12.2 Java中的事务处理 291
12.2.1 JDBC事务 291
12.2.2 JTA和JTS 293
12.3 Hibernate事务 296
12.3.1 基于JDBC的事务处理 296
12.3.2 基于JTA的事务处理 298
12.4 并发控制 301
12.4.1 并发事务处理 301
12.4.2 封锁 303
12.4.3 事务隔离级别 304
12.4.4 并发控制的类型 306
12.5 乐观并发控制 306
12.5.1 应用程序级别的版本控制 309
12.5.2 长生命周期会话的自动化版本控制 311
12.5.3 脱管对象的自动化版本控制 313
12.5.4 定制自动化版本控制 315
12.6 悲观锁定 317
12.7 小结 320
第13章 Hibernate缓存 322
13.1 Hibernate缓存 322
13.2 Hibernate一级缓存 324
13.3 Hibernate二级缓存 329
13.3.1 缓存实现 329
13.3.2 缓存并发策略 330
13.3.3 缓存配置 331
13.3.4 使用二级缓存 333
13.3.5 管理缓存 339
13.4 缓存查询结果 340
13.5 小结 341
第14章 Hibernate高级特性 343
14.1 获取数据库连接 343
14.1.1 直接使用数据库连接 343
14.1.2 使用数据库连接池 344
14.1.3 使用数据源 348
14.2 过滤数据 350
14.3 批量处理 355
14.3.1 应用级别的批量处理 356
14.3.2 无状态Session 357
14.3.3 HQL中的DML风格操作 359
14.4 延迟加载 362
14.4.1 属性延迟加载 363
14.4.2 持久化类延迟加载 366
14.4.3 集合延迟加载 368
14.5 数据抓取策略 370
14.5.1 配置抓取策略 372
14.5.2 批量抓取策略 374
14.6 监控Hibernate性能 377
14.7 小结 378
第15章 使用JPA的对象持久化 380
15.1 JPA简介 380
15.1.1 Java内置元数据工具 381
15.1.2 从实体Bean到JPA 384
15.2 使用JPA实现对象持久化 386
15.2.1 编写实体类 386
15.2.2 配置JPA 390
15.2.3 在JSE环境获取Entity Manager 393
15.2.4 在JEE环境获取Entity Manager 394
15.2.5 使用Entity Manager操作对象 396
15.3 小结 399
第16章 构建应用开发平台 400
16.1 关注域对象模型 400
16.2 使用Hibernate设计持久层 401
16.2.1 映射域对象模型 402
16.2.2 实现DAO 403
16.3 使用Spring2设计服务层 406
16.3.1 管理组件依赖和生命周期 406
16.3.2 分离关注点 408
16.3.3 编写服务组件 409
16.4 使用Struts2设计表现层 412
16.4.1 Struts2中的MVC实现 412
16.4.2 编写并配置Actions 413
16.4.3 编写用户视图 415
16.4.4 连接模型和视图 417
16.5 应用开发平台架构全景 418
16.5.1 配置Spring 419
16.5.2 配置Web应用 421
16.5.3 运行实例 423
16.6 小结 423
附录 425
附录A 环境配置 425
附录B XML元数据 435
附录C 开源工具箱 441
参考文献 445