第1章 Hibernate O/R Mapping技术基础 1
1.1 Hibernate框架——一个提供数据库服务的中间件 1
1.1.1 Hibernate框架中的O/R Mapping技术 1
1.1.2 Hibernate框架系统 6
1.2 Hibernate框架查询语言(HQL) 13
1.2.1 HQL中的from子句 13
1.2.2 HQL中的select子句 15
1.2.3 HQL中的where子句 16
1.2.4 HQL中的各种表达式 17
1.2.5 HQL中的更新、删除功能 18
1.3 在J2SE应用中使用Hibernate框架的示例 19
创建基于Hibernate框架技术的Java应用程序 19
小结 42
练习 43
第2章 Hibernate框架主要的核心API 44
2.1 与系统初始化相关的各个接口和类 44
2.1.1 Configuration类 44
2.1.2 SessionFactory接口 46
2.2 数据访问操作编程中所涉及的各个接口 48
2.2.1 Session接口 48
2.2.2 Transaction接口 52
2.2.3 Query接口 53
2.2.4 Criteria接口及Criteria查询表达式 55
2.3 利用ThreadLocal实现线程安全的应用 59
2.3.1 线程安全的代码 59
2.3.2 编程实现线程安全的DAO组件 61
2.4 在Hibernate中实现BLOB和CLOB字段的数据访问 64
2.4.1 Hibernate提供了对数据库表的大字段类型的支持 64
2.4.2 在Hibernate中实现大字段类型的示例 66
小结 70
练习 70
第3章 Hibernate框架的系统配置文件 72
3.1 Hibernate框架的系统配置文件 72
3.1.1 Hibernate框架系统的数据库连接配置 72
3.1.2 hibernate.cfg.xml格式的数据库连接配置 74
3.1.3 数据库连接的配置文件名可以为其他名称 78
3.2 以编程的方式实现Hibernate数据库连接的系统配置 78
3.2.1 主要涉及Hibernate API中的类与接口 78
3.2.2 编程的方式实现Hibernate数据库连接的示例 80
3.3 O/R Mapping的映射配置文件 83
小结 88
练习 88
第4章 网上商城项目持久层设计和实现 89
4.1 项目中实体域建模 89
4.1.1 建立域模型并发现类 89
4.1.2 建立域模型并找出类之间的关系 93
4.2 根据E-R图进行数据库表的逻辑设计 94
数据库表的逻辑设计 94
4.3 项目中的DAO组件设计 98
DAO设计模式 98
4.4 项目中的DAO组件的编程实现 101
4.4.1 构建项目中的持久层的数据库连接组件 101
4.4.2 构建项目中的持久层的各个持久实体类 105
4.4.3 映射持久层中的各个持久类与对应的数据库表 106
4.4.4 实现持久层中的各个DAO组件类 109
4.4.5 构建对DAO组件进行单元测试的环境 118
4.4.6 构建对DAO组件的测试用例类 121
小结 130
练习 131
第5章 对象关联关系的映射技术 132
5.1 对象/关系映射技术 133
5.1.1 域对象之间的关系 133
5.1.2 对象/关系映射技术 137
5.2 在Hibernate框架中实现对象关联映射 138
5.2.1 在数据库中如何体现数据库表之间的关系 138
5.2.2 在Hibernate中实现对象关联映射 140
5.3 在Hibernate框架中实现对象关联映射的示例 145
5.3.1 构建出关联映射的主动方类 145
5.3.2 构建出关联映射的被动方类 158
5.3.3 实现“一对多”的关联映射 160
5.3.4 实现“多对一”的关联映射 163
5.3.5 实现“一对一”的关联映射 167
小结 178
练习 179
第6章 体验对象关联映射在项目中的应用 180
6.1 网上商城项目中的关联映射的实现 180
6.1.1 网上商城项目中各个实体对象及其关系 180
6.1.2 实现UserlnfoPO与OrderInfoPO之间的关联 181
6.1.3 实现OrderInfoPO与UserInfoPO之间的关联 183
6.1.4 实现OrderInfoPO与GoodsInfoBasePO之间的关联 185
6.2 BBS论坛项目中关联映射的实现 187
6.2.1 BBS论坛项目中各个实体对象及其关系 187
6.2.2 BBS论坛项目中实体之间关系的映射实现 188
6.3 体验和理解Hibernate中的延迟加载技术 190
6.3.1 Hibernate框架中的延迟加载过程 190
6.3.2 在Hibernate中实现“Open Session In View”模式 194
小结 197
练习 197
第7章 对象包含关系的映射技术 198
7.1 Hibernate框架的对象包含关系的映射技术 198
7.1.1 包含关系的两种形式 198
7.1.2 组合(Component)映射技术 200
7.1.3 Component映射技术的示例 210
7.2 Hibernate框架中的集合映射技术 218
7.2.1 Hibernate框架提供对集合映射的支持 218
7.2.2 Hibernate框架对集合映射的要求 220
7.3 Set集合映射技术 221
7.3.1 Set集合映射技术示例 221
7.3.2 体验集合映射中<composite-element>的应用 228
7.4 List集合映射实现 236
7.4.1 List集合映射技术 236
7.4.2 List集合映射示例 236
7.5 Map集合映射实现 243
7.6 网上商城项目中对象包含关系的映射示例 251
小结 254
练习 255
第8章 继承关系的映射技术 257
8.1 Hibernate框架对继承关系的映射支持 257
8.1.1 面向对象技术中的继承和多态 257
8.1.2 Hibernate框架对继承关系的映射支持 261
8.2 继承关系树中的每个具体类对应一个表的映射实现 263
8.2.1 映射实现的原理和数据库表设计要求 263
8.2.2 各个持久类的设计 264
8.2.3 为本示例中各个持久类和对应的数据库表建立映射文件 271
8.2.4 在项目的DAO组件类中设计数据访问方法 275
8.2.5 测试本映射实现并进一步完善功能实现 277
8.3 将整个类层次映射为单个数据库表的映射实现 281
8.3.1 映射实现的原理和数据库表设计要求 281
8.3.2 本示例映射实现中的各个持久类的设计 282
8.3.3 为示例中各个持久类和对应的数据库表建立映射文件 283
8.3.4 在项目的DAO组件类中设计数据访问方法 287
8.3.5 测试本映射实现并进一步完善功能实现 290
8.4 每个类均映射为一个数据库表的映射实现 294
8.4.1 映射实现的原理和数据库表设计要求 294
8.4.2 本示例映射实现中的各个持久类的设计 295
8.4.3 为示例中各个持久类和对应的数据库表建立映射文件 295
8.4.4 在项目的DAO组件类中设计数据访问方法 298
8.4.5 测试本映射实现并进一步完善功能实现 300
8.5 网上商城项目中对象继承关系的映射示例 305
小结 309
练习 309
第9章 对基于Hibernate的DAO单元测试 311
9.1 JUnit单元测试技术 311
9.1.1 单元测试技术 311
9.1.2 单元测试之JUnit框架 313
9.2 对基于Hibernate框架技术的DAO组件单元测试 319
9.2.1 DAO组件单元测试的测试要点 319
9.2.2 DAO组件单元测试的测试示例 320
9.3 网上商城项目持久层中的各个DAO组件的单元测试 332
9.3.1 在应用项目所在的工作空间中再添加一个测试项目 332
9.3.2 在测试项目中添加各个DAO组件的测试用例类 333
小结 340
练习 341
第10章 Hibernate框架中的缓存技术 342
10.1 Hibernate框架中的缓存技术 342
10.1.1 缓存的作用 342
10.1.2 Hibernate框架中的第一级缓存 345
10.1.3 Hibernate框架中的第二级缓存 348
10.2 Hibernate框架的查询缓存及实现 351
10.2.1 Hibernate框架的查询缓存 351
10.2.2 Ehcache数据缓存的解决方案 353
10.3 在网上商城项目中应用Hibernate缓存技术 356
10.3.1 应用Hibernate框架二级缓存技术 356
10.3.2 应用Hibernate框架查询缓存技术 362
小结 366
练习 366
第11章 Hibernate中的事务管理技术 367
11.1 事务及分布式事务实现 367
11.1.1 事务及事务的特性 367
11.1.2 基于JDBC数据库连接事务处理技术 372
11.2 Hibernate框架中的事务管理技术及实现 378
11.2.1 Hibernate框架事务管理默认是对JDBC的包装 378
11.2.2 Hibernate事务管理技术也提供对JTA的事务支持 382
小结 387
练习 387
第12章 Eclipse工具对Hibernate开发的支持 388
12.1 对hibernate.cfg.xml文件可视化设计的支持 388
12.2 利用DataBase Explorer产生数据库表的影射文件 391
小结 394
练习 395
参考文献 396