第1篇 基础篇
第1章 Hibernate与持久化概述 3
1.1 分层体系结构 3
1.1.1 MVC模式 3
1.1.2 持久层 4
1.1.3 软件分层的优、缺点 5
1.2 ORM 5
1.2.1 什么是ORM 5
1.2.2 ORM的解决方案 6
1.2.3 ORM技术的优缺点 6
1.3 域模型 7
1.3.1 实体域对象 7
1.3.2 过程域对象 7
1.3.3 事件域对象 7
1.3.4 域对象之间的关系 7
1.3.5 常用域对象的持久化技术 8
1.4 Hibernate简介 10
1.5 Hibernate核心接口 10
1.5.1 Configuration接口 10
1.5.2 SessionFactory接口 10
1.5.3 Session接口 11
1.5.4 Transaction接口 11
1.5.5 Query和Criteria接口 11
第2章 Hibernate入门 12
2.1 环境搭建 12
2.1.1 安装和配置JDK1.5 12
2.1.2 安装SQL Server 2000 14
2.1.3 Hibernate包的下载与放置 17
2.2 创建数据库及数据表 20
2.2.1 创建SQL Server数据库及数据表 20
2.2.2 创建MySQL数据库及数据表 22
2.3 创建Hibernate配置文件 24
2.3.1 创建xml格式的配置文件 25
2.3.2 创建Java属性文件格式的配置文件 26
2.3.3 Hibernate配置属性 26
2.4 通过Hibernate连接数据库 27
2.4.1 连接SQL Server 2000数据库的Hibernate配置文件 27
2.4.2 连接MySQL数据库的Hibernate配置文件 29
2.4.3 连接Oracle数据库的Hibernate配置文件 30
2.5 创建持久化类及映射文件 32
2.5.1 创建持久化类 32
2.5.2 创建映射文件 33
2.5.3 解析映射文件 33
2.6 构建SessionFactory 35
2.6.1 从XML文件读取配置信息构建SessionFactory 35
2.6.2 从Java属性文件读取配置信息构建SessionFactory 36
2.7 Session的创建与关闭 36
2.7.1 Session的创建 36
2.7.2 Session的关闭 37
2.8 在Eclipse上创建Hibernate实例 37
2.8.1 在J2EE Development视图模式下新建项目 37
2.8.2 将数据库驱动包导入Eclipse中 38
2.8.3 在Hibernate视图模式下建立数据库连接 39
2.8.4 在J2EE Development视图模式下建立存放类的包文件夹 42
2.8.5 将Hibernate3.2类库构建到Eclipse中 43
2.8.6 将Hibernate3.2类库引入到工程中 43
2.8.7 在Hibernate视图模式下生成持久化类和映射文件 45
2.8.8 系统自动生成的配置文件、持久化类和映射文件 46
2.8.9 创建业务逻辑类 48
2.8.10 创建JSP页面文件 49
2.8.11 发布并运行程序 50
2.9 在JBuilder上创建Hibernate实例 51
2.9.1 创建工程及Web模块 51
2.9.2 引入Hibernate和JDBC包 55
2.9.3 创建持久化类和映射文件 59
2.9.4 创建Hibernate配置文件 63
2.9.5 创建业务逻辑类 64
2.9.6 创建JSP页面文件 65
2.9.7 运行程序 66
2.9.8 实例文件架构 66
第1篇 基础篇
第1章 Hibernate与持久化概述 3
1.1 分层体系结构 3
1.1.1 MVC模式 3
1.1.2 持久层 4
1.1.3 软件分层的优、缺点 5
1.2 ORM 5
1.2.1 什么是ORM 5
1.2.2 ORM的解决方案 6
1.2.3 ORM技术的优缺点 6
1.3 域模型 7
1.3.1 实体域对象 7
1.3.2 过程域对象 7
1.3.3 事件域对象 7
1.3.4 域对象之间的关系 7
1.3.5 常用域对象的持久化技术 8
1.4 Hibernate简介 10
1.5 Hibernate核心接口 10
1.5.1 Configuration接口 10
1.5.2 SessionFactory接口 10
1.5.3 Session接口 11
1.5.4 Transaction接口 11
1.5.5 Query和Criteria接口 11
第2章 Hibernate入门 12
2.1 环境搭建 12
2.1.1 安装和配置JDK1.5 12
2.1.2 安装SQL Server 2000 14
2.1.3 Hibernate包的下载与放置 17
2.2 创建数据库及数据表 20
2.2.1 创建SQL Server数据库及数据表 20
2.2.2 创建MySQL数据库及数据表 22
2.3 创建Hibernate配置文件 24
2.3.1 创建xml格式的配置文件 25
2.3.2 创建Java属性文件格式的配置文件 26
2.3.3 Hibernate配置属性 26
2.4 通过Hibernate连接数据库 27
2.4.1 连接SQL Server 2000数据库的Hibernate配置文件 27
2.4.2 连接MySQL数据库的Hibernate配置文件 29
2.4.3 连接Oracle数据库的Hibernate配置文件 30
2.5 创建持久化类及映射文件 32
2.5.1 创建持久化类 32
2.5.2 创建映射文件 33
2.5.3 解析映射文件 33
2.6 构建SessionFactory 35
2.6.1 从XML文件读取配置信息构建SessionFactory 35
2.6.2 从Java属性文件读取配置信息构建SessionFactory 36
2.7 Session的创建与关闭 36
2.7.1 Session的创建 36
2.7.2 Session的关闭 37
2.8 在Eclipse上创建Hibernate实例 37
2.8.1 在J2EE Development视图模式下新建项目 37
2.8.2 将数据库驱动包导入Eclipse中 38
2.8.3 在Hibernate视图模式下建立数据库连接 39
2.8.4 在J2EE Development视图模式下建立存放类的包文件夹 42
2.8.5 将Hibernate3.2类库构建到Eclipse中 43
2.8.6 将Hibernate3.2类库引入到工程中 43
2.8.7 在Hibernate视图模式下生成持久化类和映射文件 45
2.8.8 系统自动生成的配置文件、持久化类和映射文件 46
2.8.9 创建业务逻辑类 48
2.8.10 创建JSP页面文件 49
2.8.11 发布并运行程序 50
2.9 在JBuilder上创建Hibernate实例 51
2.9.1 创建工程及Web模块 51
2.9.2 引入Hibernate和JDBC包 55
2.9.3 创建持久化类和映射文件 59
2.9.4 创建Hibernate配置文件 63
2.9.5 创建业务逻辑类 64
2.9.6 创建JSP页面文件 65
2.9.7 运行程序 66
2.9.8 实例文件架构 66
第3章 操纵实体对象 67
3.1 Hibernate对象的三种状态 67
3.1.1 临时状态 68
3.1.2 持久化状态 68
3.1.3 游离状态 68
3.1.4 持久化类对象的三种状态之间的转换过程 69
3.2 Session中增加、修改和删除的方法 69
3.2.1 save()方法 69
3.2.2 update()方法 73
3.2.3 saveOrUpdate()方法 76
3.2.4 delete()方法 78
3.3 Session中的查询方法 80
3.3.1 load()方法 80
3.3.2 get()方法 82
3.4 清除缓存对象 85
3.4.1 evict()方法 85
3.4.2 clear()方法 86
3.5 级联操作在关联中的使用 87
3.5.1 none的用法 89
3.5.2 save-update的用法 90
3.5.3 delete的用法 91
3.5.4 delete-orphan的用法 92
第4章 Hibernate的数据查询 94
4.1 数据查询方式简介 94
4.1.1 HQL检索方式 95
4.1.2 QBC检索方式 95
4.1.3 本地SQL查询 96
4.2 检索基础 97
4.2.1 Query的list()方法 97
4.2.2 Query的iterate()方法 98
4.2.3 利用HQL绑定参数查询 100
4.2.4 只返回一个检索对象 102
4.2.5 多态查询 103
4.2.6 分批检索对象与数据分页显示的实现 103
4.2.7 在映射文件中定义命名查询语句 106
4.3 条件查询 107
4.3.1 比较查询 108
4.3.2 限定查询范围 109
4.3.3 逻辑关系查询 110
4.3.4 字符串匹配查询 111
4.4 统计函数的运用 112
4.5 投影查询 113
4.6 将查询结果排序 115
4.7 分组查询 116
4.8 联接查询 117
4.8.1 内联接 119
4.8.2 左外联接 122
4.8.3 右外联接 127
4.8.4 全联接 129
4.9 高级查询 130
4.9.1 集合过滤 130
4.9.2 QBC动态查询 133
第2篇 高级篇
第5章 映射一对多关联 139
5.1 一对多关联简介 139
5.2 单向关联 141
5.2.1 单向关联的建立 141
5.2.2 many-to-one元素的not-null属性 142
5.2.3 级联保存与更新 143
5.3 双向关联 144
5.3.1 双向关联的建立 144
5.3.2 set元素的inverse属性 146
5.3.3 级联操作关联对象 147
5.4 自关联 147
5.5 扩展持久化类 149
5.5.1 Hibernate访问持久化类属性的策略 149
5.5.2 在持久化类中加入派生属性 151
5.5.3 在持久化类的方法中加入程序代码 152
5.5.4 控制insert和update操作 154
5.6 运用命名策略 155
第6章 映射其他关联关系 162
6.1 一对一关联 162
6.1.1 以主键关联 162
6.1.2 以外键关联 164
6.2 多对多的单向关联 166
6.3 多对多的双向关联 170
6.3.1 双向关联的建立 170
6.3.2 bag元素的使用 171
第7章 Hibernate中事务的应用 174
7.1 事务的概念 174
7.2 事务回滚的应用 175
7.3 隔离级别的选择 176
7.4 数据锁定 177
7.4.1 悲观锁的使用 177
7.4.2 乐观锁的使用 178
7.4.3 Session中的lock()和update()方法 181
第8章 Hibernate检索策略 184
8.1 立即检索 185
8.1.1 一对多的立即检索 186
8.1.2 多对一的立即检索 187
8.2 延迟检索 188
8.2.1 一对多的延迟检索 188
8.2.2 多对一的延迟检索 190
8.3 批量检索 192
8.3.1 一对多的批量检索 192
8.3.2 多对一的批量检索 195
8.4 迫切左外联接检索 197
8.4.1 通过配置文件实现 197
8.4.2 通过HQL语句实现 199
第9章 映射值类型集合 201
9.1 映射Set 201
9.2 映射List 203
9.3 映射Map 205
9.4 映射Bag 208
9.5 对集合排序 209
9.5.1 在数据库中排序 209
9.5.2 在内存中排序 212
第3篇 典型实例篇
第10章 网站留言簿 217
10.1 实例运行结果 218
10.2 设计与分析 218
10.2.1 系统分析 218
10.2.2 系统流程 218
10.2.3 文件夹及文件架构 219
10.2.4 Hibernate配置文件及类的分布 219
10.3 技术要点 220
10.3.1 获取留言及回复信息 220
10.3.2 获取系统日期和时间 221
10.3.3 保存留言信息时自动插入回复记录 221
10.4 开发过程 222
10.4.1 数据表结构 222
10.4.2 创建Hibernate配置文件 223
10.4.3 创建实体类及映射文件 224
10.4.4 业务处理逻辑类 225
10.4.5 添加留言信息 229
10.4.6 显示留言信息 231
10.4.7 回复留言 234
10.4.8 删除留言 235
10.5 调试、发布与运行 235
10.5.1 调试 235
10.5.2 发布与运行 236
第11章 数据分页 237
11.1 实例运行结果 238
11.2 设计与分析 238
11.2.1 系统分析 238
11.2.2 功能图解 238
11.2.3 文件夹及文件架构 239
11.2.4 Hibernate配置文件及类的分布 239
11.3 技术要点 239
11.3.1 映射视图 239
11.3.2 Hibernate的批量检索 242
11.4 开发过程 243
11.4.1 数据表及视图结构 243
11.4.2 创建Hibernate配置文件 244
11.4.3 创建实体类及映射文件 244
11.4.4 Hibernate封装类 244
11.4.5 获取请求页面信息 246
11.4.6 控制换行输出 247
11.5 发布与运行 248
第12章 复杂条件查询 249
12.1 实例运行结果 249
12.2 设计与分析 250
12.2.1 系统分析 250
12.2.2 系统流程 250
12.2.3 文件夹及文件架构 251
12.2.4 Hibernate配置文件及类的分布 251
12.3 技术要点 251
12.4 开发过程 252
12.4.1 数据表结构 252
12.4.2 创建Hibernate配置文件 252
12.4.3 创建实体类及映射文件 253
12.4.4 业务处理逻辑类 254
12.4.5 查询并显示全部数据 256
12.4.6 指定条件查询并显示数据 258
12.5 调试、发布与运行 260
12.5.1 调试 260
12.5.2 发布与运行 260
第13章 权限管理 261
13.1 实例运行结果 262
13.2 设计与分析 262
13.2.1 系统分析 262
13.2.2 系统流程 262
13.2.3 文件夹及文件架构 263
13.2.4 Hibernate配置文件及类的分布 263
13.3 技术要点 264
13.4 开发过程 265
13.4.1 数据表结构 265
13.4.2 创建Hibernate配置文件 266
13.4.3 创建实体类及映射文件 266
13.4.4 业务处理逻辑类 268
13.4.5 添加管理员信息 271
13.4.6 显示管理员列表 272
13.4.7 修改管理员权限 273
13.4.8 删除管理员信息 275
13.5 发布与运行 275
第14章 企业内部邮件管理 276
14.1 实例运行结果 277
14.2 设计与分析 277
14.2.1 系统分析 277
14.2.2 系统流程 277
14.2.3 文件夹及文件架构 277
14.2.4 Hibernate配置文件及类的分布 278
14.3 技术要点 278
14.3.1 动态加载所有用户到下拉列表 278
14.3.2 分页Bean的编写 279
14.4 开发过程 281
14.4.1 数据表结构 281
14.4.2 创建配置文件、实体类和映射文件 282
14.4.3 用户注册 282
14.4.4 发送邮件 283
14.4.5 接收邮件 284
14.4.6 查看邮件 285
14.4.7 删除邮件 286
14.5 发布与运行 286
第15章 在线投票 288
15.1 实例运行结果 289
15.2 设计与分析 289
15.2.1 系统分析 289
15.2.2 系统流程 289
15.2.3 文件夹及文件架构 290
15.2.4 Hibernate配置文件及类的分布 290
15.3 技术要点 291
15.3.1 IP的获得与限制 291
15.3.2 柱状图的生成 291
15.4 开发过程 293
15.4.1 数据表结构 293
15.4.2 创建配置文件、实体类和映射文件 294
15.4.3 提交投票 294
15.4.4 输出投票结果到表格 295
15.4.5 查看柱状图 296
15.5 发布与运行 298
第16章 在线论坛 299
16.1 实例运行结果 300
16.2 设计与分析 300
16.2.1 系统分析 300
16.2.2 系统流程 301
16.2.3 文件夹及文件架构 301
16.2.4 Hibernate配置文件及类的分布 301
16.3 技术要点 302
16.3.1 映射一对多关联 302
16.3.2 级联删除 302
16.4 开发过程 303
16.4.1 数据表结构 303
16.4.2 创建Hibernate配置文件 304
16.4.3 创建实体类及映射文件 304
16.4.4 用户注册 305
16.4.5 用户登录 308
16.4.6 主题的创建与回复 309
16.4.7 主题的维护 311
16.5 发布与运行 315
第17章 系统登录 316
17.1 实例运行结果 316
17.2 设计与分析 317
17.2.1 系统分析 317
17.2.2 系统流程 317
17.2.3 Hibernate配置文件及类的分布 317
17.3 技术要点 318
17.4 开发过程 319
17.4.1 数据表结构 319
17.4.2 创建Hibernate配置文件 319
17.4.3 创建实体类及映射文件 319
17.4.4 业务处理逻辑类 320
17.4.5 自定义面板类 321
17.4.6 用户登录窗体 322
17.5 调试、编译与运行 326
第4篇 项目实践篇
第18章 运用Struts+Hibernate开发物资管理系统 329
18.1 需求分析 330
18.2 系统设计 330
18.2.1 项目规划 330
18.2.2 系统功能结构 330
18.2.3 业务流程 330
18.3 数据库设计 331
18.3.1 数据表、视图的简要说明 331
18.3.2 数据表关系概要说明 332
18.3.3 主要数据表的结构 332
18.4 网站总体设计 335
18.4.1 文件夹架构设计 335
18.4.2 类的分布架构设计 336
18.4.3 文件架构 336
18.4.4 网站首页架构 337
18.5 配置Struts 337
18.6 配置Hibernate配置文件 339
18.7 公共类的编写 340
18.7.1 Session管理类的编写 340
18.7.2 获取日期和时间类的编写 341
18.8 用户管理模块 342
18.8.1 用户管理模块总体架构 342
18.8.2 创建用户管理模块的持久化类及映射文件 342
18.8.3 创建用户管理的Action实现类 344
18.8.4 系统登录设计 345
18.8.5 查看用户列表设计 348
18.8.6 添加用户信息设计 351
18.8.7 修改用户权限设计 355
18.8.8 删除用户设计 358
18.9 物资管理模块 360
18.9.1 物资管理模块总体架构 360
18.9.2 创建物资管理模块的持久化类及映射文件 360
18.9.3 创建物资管理的Action实现类 361
18.9.4 查看物资列表设计 362
18.9.5 添加物资信息设计 364
18.9.6 修改物资设计 366
18.9.7 删除/恢复物资信息设计 369
18.10 物资入库模块 370
18.10.1 物资入库模块总体架构 370
18.10.2 创建物资入库模块的持久化类及映射文件 370
18.10.3 创建物资入库的Action实现类 372
18.10.4 采购登记设计 374
18.10.5 审核入库设计 380
18.10.6 借出归还设计 385
18.11 物资出库模块 387
18.11.1 物资出库模块总体架构 387
18.11.2 创建物资出库模块的持久化类及映射文件 387
18.11.3 创建物资出库的Action实现类 388
18.11.4 部门领用设计 390
18.11.5 物资借出设计 394
18.11.6 借出审核设计 396
18.12 物资处理模块 399
18.12.1 物资处理模块总体架构 399
18.12.2 创建物资处理模块的持久化类及映射文件 399
18.12.3 创建物资处理模块的Action实现类 400
18.12.4 库存盘点设计 400
18.12.5 部门报损设计 403
18.13 查询统计模块 406
18.13.1 查询统计模块总体架构 406
18.13.2 创建查询统计模块的ActionForm类 407
18.13.3 创建查询统计模块的Action实现类 407
18.13.4 在QueryDAO类中创建通用查询的方法 408
18.13.5 采购单查询设计 410
18.13.6 部门领用汇总设计 414
18.13.7 部门汇总设计 417
18.14 系统初始化模块 419
18.14.1 创建系统初始化模块的业务逻辑类 420
18.14.2 系统初始化页面设计 421
18.15 疑难问题分析与解决 421
18.15.1 在Struts中解决中文乱码 421
18.15.2 部门汇总模块SQL语句解析 422
第19章 运用Struts+Hibernate开发电子商城 427
19.1 需求分析 428
19.2 系统设计 428
19.2.1 项目规划 428
19.2.2 系统功能结构图 428
19.3 数据库设计 429
19.3.1 数据表简要说明 429
19.3.2 数据表关系概要说明 429
19.3.3 主要数据表的结构 430
19.4 网站总体设计 432
19.5 在Struts框架下使用Tiles框架 433
19.6 Struts框架的执行流程 434
19.7 配置Hibernate 434
19.7.1 配置Hibernate配置文件 434
19.7.2 配置持久化类映射文件 435
19.8 开发电子商城前台 436
19.8.1 开发前台模板及首页 437
19.8.2 开发新品上架及特价商品页 444
19.8.3 开发商品销售排行模块 445
19.8.4 开发查看订单模块 448
19.8.5 开发购物车 449
19.8.6 开发修改资料页 454
19.9 开发电子商城后台 455
19.9.1 开发订单管理模块 455
19.9.2 开发商品管理模块 459
19.9.3 开发商品类别管理模块 462
19.9.4 开发公告管理模块 470
19.9.5 开发会员管理模块 471
19.9.6 开发管理员管理模块 472
19.10 疑难问题分析与解决 474
19.10.1 分页Bean的开发流程 474
19.10.2 文件上传 477