第1篇 Hibernate入门 2
第1章 对象关系映射基础 2
1.1 对象持久化 2
1.2 对象—关系映射 3
1.3 对象持久化的实现模式 4
1.3.1 主动域对象模式 4
1.3.2 CMP模式 5
1.3.3 JDO模式 5
1.4 感受ORM 6
1.4.1 JDBC操作数据库 6
1.4.2 Hibernate操作数据库 10
1.4.3 两种技术的比较 14
1.5 小结 15
1.6 习题 15
第2章 Hibernate简介 16
2.1 中间件 16
2.1.1 中间件的概念 16
2.1.2 中间件的分类 17
2.2 Hibernate简介 19
2.2.1 Hibernate3产品套件简介 20
2.2.2 Hibernate的核心接口 23
2.2.3 Hibernate3的新特性 25
2.2.4 Hibernate的发展趋势 26
2.3 其他持久层框架 26
2.4 小结 27
2.5 习题 27
第2篇 Hibernate开发快速上手 29
第3章 Hibernate的安装与配置 29
3.1 开发环境介绍 29
3.1.1 Eclipse 29
3.1.2 Tomcat 30
3.1.3 Microsoft SQL Server 31
3.1.4 本书的相关约定 32
3.2 开发环境的搭建 32
3.2.1 搭建开发平台 33
3.2.2 下载Hibernate 38
3.2.3 设置用户库 38
3.3 Hibernate配置 41
3.3.1 Hibernate配置文件 41
3.3.2 可编程的配置方式 45
3.3.3 可选的配置属性 46
3.3.4 日志配置 48
3.3.5 数据库连接池配置 48
3.4 小结 51
3.5 习题 51
第4章 第一个Hibernate程序 53
4.1 Hibernate基础文件讲解 53
4.1.1 Hibernate配置文件 53
4.1.2 数据库Schema 54
4.1.3 持久化类 54
4.1.4 映射文件 56
4.2 Hibernate工具简介 57
4.2.1 Middlegen-Hibernate 57
4.2.2 Hibernate-Extension之hbm2iava和class2hbm 62
4.2.3 Hibernate的内置工具hbm2dll 63
4.2.4 Hibernate工具包 65
4.2.5 基础文件的生成路线 69
4.2.6 Hibernate和Ant示例 70
4.3 Hello World应用程序 75
4.3.1 创建数据库表 75
4.3.2 创建Java工程 76
4.3.3 创建Hibernate基础文件 78
4.3.4 Hello World程序实现 81
4.4 小结 84
4.5 习题 84
第3篇 Hibernate应用开发 86
第5章 映射定义与映射类型 86
5.1 Hibernate的映射定义 86
5.1.1 XML文件头 87
5.1.2 hibernate-mapping根元素 88
5.1.3 class元素定义持久化类 91
5.1.4 id元素定义持久化标志符 93
5.1.5 generator子元素定义持久化标志符的生成策略 94
5.1.6 持久化标志符生成策略示例 96
5.1.7 composite-id元素映射复合主键 106
5.1.8 property元素定义持久化类的属性 110
5.1.9 其他元素 112
5.2 Hibernate的映射类型 112
5.2.1 Hibernate的内置基本映射类型 112
5.2.2 用户自定义映射类型 114
5.3 小结 118
5.4 习题 118
第6章 持久化对象 119
6.1 持久化类 119
6.2 Hibernate对象状态 121
6.2.1 瞬时(Transient)状态 121
6.2.2 持久(Persistent)状态 122
6.2.3 脱管(Detached)状态 122
6.2.4 状态转换关系 123
6.3 Session方法简介 124
6.3.1 save()方法 124
6.3.2 load()和get()方法 125
6.3.3 update()方法 125
6.3.4 saveOrUpdate()方法 126
6.3.5 delete()方法 126
6.3.6 其他方法 126
6.4 Session的缓存 127
6.5 持久化对象的级联操作 128
6.6 Hibernate的二级缓存 128
6.6.1 持久化层的缓存的范围 129
6.6.2 持久化层的缓存的并发访问策略 130
6.6.3 Hibernate的二级缓存 130
6.7 小结 131
6.8 习题 132
第7章 集合类映射 133
7.1 概述 133
7.1.1 Java集合类简介 134
7.1.2 Hibernate中的集合类映射 136
7.2 集合类映射 137
7.2.1 集合类映射的定义 137
7.2.2 综合示例 140
7.3 小结 156
7.4 习题 157
第8章 关联关系映射 158
8.1 基础知识 158
8.1.1 实体—关系模型 158
8.1.2 类之间的关系 159
8.2 关联关系映射 161
8.2.1 单向多对一关联 164
8.2.2 双向多对一关联 172
8.2.3 单向一对一关联 177
8.2.4 双向一对一关联 185
8.2.5 单向多对多关联 193
8.2.6 双向多对多关联 199
8.3 小结 203
8.4 习题 204
第9章 继承映射 205
9.1 概述 205
9.2 每个类分层结构一张表 206
9.3 每个子类一张表 209
9.4 每个具体类一张表 214
9.5 小结 217
9.6 习题 217
第10章 组件映射 218
10.1 概述 218
10.2 映射组件 220
10.3 映射组件集合 224
10.4 组件作为联合主键 228
10.5 小结 231
10.6 习题 231
第11章 HQL查询语言 232
11.1 select子句 232
11.2 from子句 234
11.3 关联与连接 235
11.3.1 标准SQL的连接查询 235
11.3.2 HQL的连接查询 237
11.4 where子句 237
11.5 order by子句 238
11.6 group by子句 238
11.7 子查询 239
11.8 批量的update和delete 239
11.9 其他 240
11.10 小结 241
11.11 习题 241
第12章 事务与并发 242
12.1 数据库的事务与并发 242
12.1.1 数据库事务 242
12.1.2 数据库并发产生的问题 243
12.1.3 数据库锁与封锁协议 246
12.1.4 数据库的死锁 248
12.1.5 数据库的事务隔离级别 248
12.2 Hibernate的事务范围 250
12.3 Hibernate的事务声明 251
12.4 乐观并发控制 252
12.4.1 应用程序级别的手工版本检查 253
12.4.2 扩展周期的Session和自动版本化 254
12.4.3 使用脱管对象的自动版本化 255
12.4.4 定制自动版本化行为 255
12.5 采用悲观锁 257
12.6 小结 258
12.7 习题 258
第4篇 Hibernate框架集成 260
第13章 Hibernate与Struts框架的集成 260
13.1 Hibernate与Struts框架 260
13.1.1 MVC模式 260
13.1.2 Struts框架简介 261
13.1.3 框架集成策略 263
13.1.4 框架集成示例 266
13.1.5 Eclipse配置 280
13.2 Hibernate与动态菜单 282
13.2.1 动态菜单 282
13.2.2 Struts-Menu应用简介 284
13.2.3 一个动态菜单的实现 290
13.3 小结 296
13.4 习题 296
第14章 Hibernate、Struts、Spring框架的集成 297
14.1 Sping框架简介 297
14.2 Hibernate与Spring、Struts框架的集成策略 299
14.3 环境搭建 301
14.3.1 Struts 2和Spring集成 301
14.3.2 Hibernate和Spring集成 302
14.3.3 Spring 2事务配置 316
14.3.4 Spring 2事务配置小结 329
14.4 小结 329
14.5 习题 329
第5篇 项目实战 331
第15章 科研项目管理系统 331
15.1 系统需求分析 332
15.2 系统总体架构设计 332
15.3 系统建模 333
15.3.1 域模型分析 333
15.3.2 建立映射文件 337
15.3.3 生成持久化类 343
15.3.4 数据库建模 349
15.4 系统设计 350
15.4.1 模块功能设计 351
15.4.2 接口设计 351
15.4.3 用户界面设计 352
15.4.4 目录设计 353
15.5 配置文件 354
15.5.1 hibernate.cfg.xml 355
15.5.2 struts.config.xml 355
15.6 系统初始界面 357
15.7 技术领域管理模块 359
15.7.1 技术领域列表 359
15.7.2 添加技术领域 368
15.7.3 修改技术领域 370
15.7.4 删除技术领域 372
15.8 项目管理模块 372
15.8.1 项目列表 372
15.8.2 添加项目 387
15.8.3 修改项目 391
15.8.4 删除项目 395
15.8.5 为项目指定人员 395
15.9 人员管理模块 399
15.9.1 人员列表 399
15.9.2 添加人员 410
15.9.3 修改人员 412
15.9.4 删除人员 414
15.9.5 为人员指定项目 414
15.10 综合查询 418
15.10.1 查询条件 418
15.10.2 查询结果 423
15.11 需要改进的地方 427
15.12 小结 428
15.13 习题 428
附录A Java集合类 429
ArrayList类 429
HashMap类 432
HashSet类 436
SortedMap类 440
SortedSet类 443
Vector类 446
Hashtable类 451
附录B 光盘内容与使用说明 456
B.1 光盘内容 456
B.1.1 示例源代码 456
B.1.2 实战项目源代码 457
B.2 使用示例源代码 457
B.3 使用ant应用示例源代码 461
B.4 使用实战项目源代码 461
B.5 使用Hibernate与Spring、Struts框架集成源代码 462
B.6 恢复数据库 463
第1章 对象关系映射基础 2
【例1-1】JDBC操作数据库 7
【例1-2】Hibernate操作数据库 10
第4章 第一个Hibernate程序 53
【例4-1】Hello World应用程序 75
第5章 映射定义与映射类型 86
【例5-1】increment生成器示例 96
【例5-2】identity生成器示例 99
【例5-3】assigned生成器示例 102
【例5-4】Hilo生成器示例 104
【例5-5】composite-id元素映射复合主键 107
【例5-6】实现CompositeUserType接口的用户自定义映射类型 114
第7章 集合类映射 133
【例7-1】使用<set>与<one-to-many>进行实体集合映射 140
【例7-2】使用<map>、<map-key>、<composite-element>进行值类型集合映射 145
【例7-3】使用<list>、<list-index>、<one-to-many>实现自身双向一对多关联 149
【例7-4】使用<idbag>、<collection-id>实现基于代理键的单向自身多对多关联 153
第8章 关联关系映射 158
【例8-1】Person类与Address类之间的单向多对一关联 165
【例8-2】Person类与Address类之间的双向多对一关联 172
【例8-3】基于外键关联的单向一对一关联 178
【例8-4】基于主键关联的单向一对一关联 180
【例8-5】基于外键关联的双向一对一关联 185
【例8-6】基于主键关联的双向一对一关联 189
【例8-7】单向多对多关联 194
【例8-8】双向多对多关联 199
第9章 继承映射 205
【例9-1】每个类分层结构一张表 206
【例9-2】每个子类一张表 209
【例9-3】每个具体类一张表 214
第10章 组件映射 218
【例10-1】映射组件 220
【例10-2】映射组件集合 224
【例10-3】组件作为联合主键 228
第13章 Hibernate与Struts框架的集成 260
【例13-1】Hibernate与Struts框架集成示例 266
【例13-2】Hibernate与StrutsMenu框架集成示例 290