代序 III
本书阅读时的注意事项 IV
1 初探Hibernate
1.1 Hibernate?!据说…… 2
1.2 从简化JDBC实际操作的角度来看Hibernate 2
1.3 从体现“面向对象思想”的角度来看Hibernate 4
1.4 主线任务与支线任务 6
2 Hibernate,一个更好的JDBC!
2.1 增、删、改、查,扎马步一样的基本功 12
2.2 配置——Hibernate的灵魂 16
2.3 Hibernate对于主键生成的火力支援 20
2.4 原生SQL的查询 23
2.5 关于配置文件的更多细节 26
2.6 题外话——Value Object不等于域对象 30
2.7 问题与讨论 30
3 把软件做软——浅谈面向对象思想、分析模式/设计模式、域模型
3.1 面向对象基本概念 32
3.2 OOAD 35
3.3 分析模式 35
3.4 设计模式 41
3.5 平台方面的落实 49
3.6 从“Think in Data”到“Think in Object” 52
3.7 问题与讨论 53
4 开启对象和关系型数据库的一扇门——静态结构的解决之道
4.1 实体类型(Entity Type)与值类型(Value Type) 56
4.2 实体类型(Entity Type)的一对多 57
4.3 实体类型(Entity Type)的多对多 69
4.4 实体类型(Entity Type)的一对一 77
4.5 值类型(Value Type)的一对多 80
4.6 排序处理(Value Type) 85
4.7 值类型(Value Type)的Component 88
4.8 为中间Table加入额外的信息 93
4.9 继承 97
4.10 关于复合主键的对应(mapping)话题 108
5 开启对象和关系型数据库的一扇门——动态行为的解决之道
5.1 对象的生命周期 116
5.2 持久化环境(Persistent Context) 121
5.3 detached对象的标识(identity/equality) 127
5.4 运用detached对象的问题 131
5.5 进一步掌握持久化环境(Persistent Context) 140
5.6 问题与讨论 143
6 事务!事务!!事务!!!
6.1 事务二三事 148
6.2 理论的实践——当Hibernate遇上事务 158
6.3 问题与讨论 168
7 更有效地使用Hibernate
7.1 让你的持久化机制产生级联效应(Transitive Persistence) 170
7.2 大量数据的处理——Bulk&Batch 178
7.3 延迟加载 v.s. 预加载 182
7.4 关于缓存 199
7.5 单发?三发点射?全自动?回归原始SQL的调优 209
7.6 问题与讨论 210
8 Hibernate的两把查询利器——HQL & Criteria API
8.1 HQL 214
8.1.1 基本功 214
8.1.2 参数绑定 217
8.1.3 查询条件 218
8.1.4 Join 222
8.1.5 HQL的预加载 224
8.1.6 Group By … Having 227
8.1.7 子查询(Subquery)与关联子查询(Correlated Subquery) 228
8.2 Criteria API 229
8.2.1 基本功 229
8.2.2 Join与预加载 234
8.2.3 子查询 237
8.2.4 转换器(Transformer) 238
8.2.5 Aggregation & Grouping 241
8.2.6 多重查询 242
8.3 更多HQL和Criteria API的高级使用技巧 243
8.4 问题与讨论 247
9 查漏补缺——更多的Hibernate应用
9.1 过滤器(Filter) 250
9.2 不寻常的Mapping 254
9.2.1 Formula的应用 254
9.2.2 将两个Table对应到一个类 258
9.2.3 Join Table的再应用 259
9.3 Conversation 260
9.4 使用Hibernate的Type System实现Martin Fowler的Quantity分析模式 264
9.5 触发器(trigger)的后遗症 274
9.6 拦截Hibernate(Interception) 276
9.7 动态模型(Dynamic Model) 278
9.8 Blob和Clob 279
9.9 SQL生成定制化、调用存储过程(stored procedure) 281
9.10 问题与讨论 281
10 实战演练
10.1 1944/6/6(D-day)·奥马哈海滩 284
10.2 实现Hibernate的基础架构(infrastructure) 285
10.3 Spring Framework诺曼底大空降 293
10.4 问题与讨论 312
11 向Annotation迈进
11.1 基本功 318
11.2 结构的对应 325
11.3 其他 335
附录A 关于随书光盘的使用 341
附录B 让Hibernate动起来 345
附录C Hibernate的辅助开发工具 349
附录D JUnit 361
附录E DBUnit 365
附录F Hibernate的数据采集 369
附录G 参考资料 371
展开