第1章 Hibernate起源 1
1.1 ORM框架 1
1.2 ORM核心理念 2
1.3 持久层概念 3
1.4 Hibernate 3
1.4.1 Hibernate Core 4
1.4.2 Hibernate Annotations 4
1.4.3 Hibernate EntityManager 4
1.4.4 Hibernate Search 4
1.4.5 Hibernate Shards 4
1.4.6 Hibernate Validator 5
1.4.7 Hibernate Tools 5
1.4.8 NHibernate 5
1.4.9 JBoss Seam 5
1.5 下载Hibernate 5
1.6 使用Hibernate的第1个例子 6
1.6.1 建立guestbook表 6
1.6.2 新建chapter01_first项目 7
1.6.3 项目文件列表 8
1.6.4 编写hibernate.cfg.xml 9
1.6.5 编写Guestbook.java 10
1.6.6 编写Guestbook.hbm.xml 11
1.6.7 HibernateTest.java 13
1.6.8 运行HibernateTest程序 14
1.6.9 chapter01_first项目的运行过程 14
第2章 Hibernate的核心接口与类 16
2.1 Configuration类 16
2.1.1 Hibernate配置文件 17
2.1.2 在应用程序中设置新的属性值 18
2.1.3 Hibernate的核心配置信息 18
2.1.4 数据库方言类 19
2.2 SessionFactory接口 20
2.3 Session接口 20
2.3.1 save()方法 21
2.3.2 get()方法 21
2.3.3 load()方法 22
2.3.4 update()方法 22
2.3.5 delete()方法 23
2.4 Transaction接口 24
2.5 Query接口 24
2.6 Criteria接口 25
2.7 使用MyEclipse可视化开发
Hibernate实例 25
2.7.1 设置MyEclipse连接Oracle数据库 26
2.7.2 新建项目并增加Hibernate开发支持 28
2.7.3 自动生成Guestbook类与映射文件 31
2.7.4 编写HibernateSessionFactoryUtil.java文件 35
2.7.5 编写HibernateTest.java 36
2.7.6 程序运行结果 37
2.7.7 使用HQL编辑器调试HQL语句 38
2.8 Hibernate应用的开发方式 40
2.8.1 自底向上,从数据库表到持久化类 40
2.8.2 自上向下,持久化类到数据库表 40
2.8.3 从中间出发,向上与向下发展 40
2.9 设置Hibernate使用连接池 40
2.9.1 设置使用Tomcat中的连接池 40
2.9.2 使用C3P0连接池 41
2.9.3 使用自定义连接池 41
2.10 使用C3P0连接池 41
2.10.1 创建chapter02_c3p0项目 41
2.10.2 编辑hibernate.cfg.xml文件 42
2.10.3 chapter02_c3p0项目的运行与输出 43
2.11 网络留言本V2.0 43
2.11.1 建表 43
2.11.2 创建guestbookv2.0项目 43
2.11.3 编写StringUtil.java文件 44
2.11.4 为项目添加Hibernate开发支持 45
2.11.5 修改hibernate.cfg.xml的内容 45
2.11.6 生成Guestbook.java与Guestbook.hbm.xml文件 45
2.11.7 编写Guestbook在于Dao.java文件 46
2.11.8 编写GuestbookDaoHibernate.java文件 46
2.11.9 编写HibernateFactorySessionUtil.java 47
2.11.10 编写AddMessageServlet.java文件 47
2.11.11 编写GetMessagesServlet.java文件 49
2.11.12 编写CharacterEncodingFilter.java 49
2.11.13 修改web.xml文件 50
2.11.14 编写header.jsp文件 51
2.11.15 编写footer.htm文件 51
2.11.16 使用JSValidation 52
2.11.17 使用FCKeditor 54
2.11.18 编写addMessage.jsp文件 56
2.11.19 编写getMessages.jsp文件 58
2.11.20 编写addResult.jsp文件 59
2.11.21 编写error404.htm文件 59
2.11.22 编写error500.jsp文件 60
2.11.23 程序运行输出 60
第3章 标识符属性生成策略与对象识别 63
3.1 数据库中的主键 63
3.1.1 自然主键 63
3.1.2 代理主键 64
3.2 标识符属性 64
3.3 标识符属性的生成策略 64
3.3.1 increment生成策略 64
3.3.2 identity生成策略 65
3.3.3 sequence生成策略 65
3.3.4 hilo生成策略未 65
3.3.5 seqhilo生成策略 66
3.3.6 uuid生成策略 66
3.3.7 guid生成策略 66
3.3.8 native生成策略 67
3.3.9 assigned生成策略 67
3.3.10 foreign生成策略 67
3.3.11 选择标识符属性生成策略 67
3.4 映射复合主键 68
3.4.1 数据准备 68
3.4.2 使用属性映射复合主键 68
3.4.3 使用主键类映射复合主键 71
3.5 对象识别 74
3.5.1 Java中的对象识别 74
3.5.2 识别数据库中数据 75
3.5.3 识别Hibernate中的持久化对象 75
3.6 Commons lang buider 78
3.6.1 安装Commonclipse 78
3.6.2 使用Commonclipse 79
第4章 持久化对象生命周期 80
4.1 持久化对象生命周期的状态 80
4.1.1 Transient状态 80
4.1.2 Persistent状态 81
4.1.3 Detached状态 81
4.1.4 Removed状态 82
4.1.5 Session对象的“脏”数据检查 83
4.2 Session接口的核心方法 83
4.2.1 saveOrUpdate()方法 83
4.2.2 merge()方法 84
4.2.3 flush()方法 85
4.2.4 close()方法 85
4.3 不可更改的持久化对象 86
第5章 OSIV与泛型DAO模式 87
5.1 OSIV模式 87
5.1.1 使用Servlet过滤器实现OSIV模式 88
5.1.2 配置web.xml文件 89
5.2 泛型DAO的设计与实现 89
5.2.1 编写泛型DAO接口 90
5.2.2 编写泛型DAO的实现类 90
5.2.3 使用GenericDao接口 91
5.2.4 使用GenericDaoHibernate类 92
5.3 网络留言本V2.1 92
5.3.1 新建guestbookv2.1项目 92
5.3.2 建立admin表 93
5.3.3 文件列表 93
5.3.4 生成Admin.java与Admin.hbm.xml文件 94
5.3.5 增加hibernate.cfg.xml文件 95
5.3.6 编写AdminDao.java文件 95
5.3.7 编写AdminDaoHibernate.java文件 95
5.3.8 修改GetMessagesServlet.java文件 96
5.3.9 编写AdminUserServlet.java文件 96
5.3.10 编写AuthenticationFilter.java文件 98
5.3.11 编写ManageServlet.java文件 99
5.3.12 编写login.jsp文件 100
5.3.13 修改validation-framework.js文件 101
5.3.14 修改validation-config.xml文件 101
5.3.15 编写loginFail.jsp文件 102
5.3.16 编写list.jsp文件 102
5.3.17 编写edit.jsp文件 103
5.3.18 编写editResult.jsp文件 104
5.3.19 编写deleteResult.jsp文件 105
5.3.20 修改web.xml文件 105
5.3.21 程序运行结果 107
第6章 Hibernate的集合映射 108
6.1 Set集合映射 108
6.1.1 Set接口 108
6.1.2 Set映射 110
6.2 List映射 115
6.2.1 List接口 115
6.2.2 List映射 116
6.3 Bag映射 118
6.4 IdBag映射 121
6.5 Map映射 123
6.5.1 Map接口 123
6.5.2 HashMap 123
6.5.3 LinkedHashMap 124
6.5.4 TreeMap 124
6.5.5 Map映射 125
6.6 排序集合映射 128
6.6.1 利用[set]或[map]标签的sort属性排序 128
6.6.2 利用SQL的order by子句排序 130
第7章 组件映射 132
7.1 组件(Component)映射的单向关联 132
7.1.1 数据准备 132
7.1.2 编写Profile.java文件 133
7.1.3 编写User.java文件 133
7.1.4 编写User.hbm.xml文件 134
7.1.5 编写HibernateTest.java文件 135
7.1.6 程序运行输出 136
7.2 组件映射的双向关联 137
7.3 组件集合映射 138
7.3.1 数据准备 138
7.3.2 编写Image.java文件 139
7.3.3 编写Product.java文件 140
7.3.4 编写Product.hbm.xml文件 141
7.3.5 编写HibernateTest.java文件 142
7.3.6 组件集合映射的双向关联 144
第8章 映射多对一及一对多关联关系 145
8.1 多对一单向关联 145
8.1.1 数据准备 145
8.1.2 编写Category.java与Category.hbm.xml 文件 146
8.1.3 编写Product.java与Product.hbm.xml文件 147
8.1.4 编写HibernateTest.java文件 148
8.1.5 outer-join属性 151
8.2 一对多单向关联 151
8.2.1 数据准备 151
8.2.2 编写Product.java与Product.hbm.xml文件 152
8.2.3 编写Category.java与Category.hbm.xml文件 152
8.2.4 编写HibernateTest.java文件 154
8.3 级联 156
8.4 一对多双向关联 157
8.4.1 数据准备 158
8.4.2 编写Product.java与Product.hbm.xml文件 158
8.4.3 编写Category.java与Category.hbm.xml文件 158
8.4.4 编写HibernateTest.java文件 159
8.5 控制反转(Inverse) 160
第9章 映射一对一关联关系 163
9.1 共享主键关联 163
9.1.1 数据准备 163
9.1.2 编写User.java与User.hbm.xml文件 164
9.1.3 编写Profile.java与Profile.hbm.xml文件 165
9.1.4 编写HibernateTest.java文件 166
9.2 唯一外键关联 168
9.2.1 准备数据 168
9.2.2 编写Profile.java与Profile.hbm.xml 文件 169
9.2.3 编写User.java与User.hbm.xml文件 169
9.2.4 编写HibernateTest.java 文件 170
第10章 映射多对多关联关系 171
10.1 多对多单向关联 171
10.1.1 准备数据 171
10.1.2 编写Product.java与Product.hbm.xml文件 173
10.1.3 编写Order.java与Order.hbm.xml文件 173
10.1.4 Order与Product的类图 175
10.1.5 编写HibernateTest.java文件 175
10.2 多对多双向关联 177
10.2.1 准备数据 178
10.2.2 编写Order.java与Order.hbm.xml 文件 178
10.2.3 编写Product.java与Product.hbm.xml文件 179
10.2.4 Order与Product类的类图 179
10.2.5 编写HibernateTest.java文件 180
10.3 在多对多关联中使用组件集合映射 181
10.3.1 准备数据 182
10.3.2 编写Product.java与Product.hbm.xml 文件 182
10.3.3 编写OrderItem.java文件 182
10.3.4 编写Order.java与Order.hbm.xml文件 183
10.3.5 Product、Order与OrderItem的类图 185
10.3.6 编写HibernateTest.java文件 185
10.4 分拆多对多关联为两个一对多关联 187
10.4.1 数据准备 187
10.4.2 编写Product.java与Product.hbm.xml文件 187
10.4.3 编写OrderItem.java与OrderItem.hbm.xml文件 187
10.4.4 编写Order.java与Order.hbm.xml文件 188
10.4.5 编写HibernateTest.java文件 189
第11章 Criteria查询 190
11.1 准备数据 190
11.1.1 创建guestbook、product和category表 190
11.1.2 在guestbook、product和category表中添加演示数据 191
11.1.3 实例文件 191
11.2 Criteria的基本使用 192
11.2.1 Criteria接口的主要方法 192
11.2.2 Criterion接口 193
11.2.3 排序查询结果 194
11.2.4 分页显示数据 194
11.2.5 查询一条记录 195
11.2.6 通过关联对象建立查询条件 196
11.2.7 Restrictions类 196
11.2.8 条件“或”方式组合查询条件 197
11.2.9 使用原生SQL语句设置查询条件.. 198
11.2.10 统计函数查询 198
11.2.11 统计函数组合查询条件 199
11.2.12 获取多个统计函数的值 199
11.2.13 分组查询 200
11.2.14 分组统计 200
11.2.15 为分组统计结果指定别名 201
11.2.16 投影查询 202
11.2.17 使用Property类的forName()方法实现分组统计 203
11.3 使用DetachedCriteria对象实现离线查询 204
11.4 根据示例对象查询 205
第12章 HQL与Native SQL查询 206
12.1 准备数据 206
12.2 Query接口 206
12.2.1 list()方法 207
12.2.2 iterate()方法 207
12.2.3 选择list()和iterate()方法 208
12.2.4 使用setMaxResults()和setFirstResult()方法实现分页 208
12.2.5 使用uniqueResult()方法读取唯一记录 209
12.3 HQL基础 209
12.3.1 查询所有持久化对象 209
12.3.2 投影查询 210
12.3.3 使用别名 212
12.3.4 使用distinct关键字 213
12.3.5 限定查询的条件 213
12.3.6 数据排序 216
12.3.7 使用参数占位符 216
12.3.8 使用统计函数 217
12.3.9 使用函数 218
12.4 HQL的批量更新 218
12.5 HQL中的连接查询 219
12.5.1 使用交叉连接 219
12.5.2 使用内连接 220
12.5.3 使用左外连接 221
12.5.4 使用右外连接 222
12.5.5 迫切内连接 223
12.5.6 迫切左外连接 225
12.6 命名的HQL 225
12.7 使用SQL 226
12.7.1 SQL查询 226
12.7.2 SQL更新记录 228
12.7.3 SQL删除记录 228
12.7.4 命名的SQL 229
12.7.5 调用存储过程 229
12.8 使用SQLQuery对象实现动态表映射 230
12.8.1 准备数据 230
12.8.2 编写LogInfo.java文件 231
12.8.3 编写LogInfo.hbm.xml文件 231
12.8.4 编写HibernateTest.java文件 232
12.9 在Hibernate中调用数据库存储过程 233
12.9.1 准备数据 233
12.9.2 调用数据库存储过程 234
12.10 在Hibernate中使用JDBC 234
12.10.1 准备数据 235
12.10.2 调用数据库存储过程 235
第13章 Hibernate的事务管理 236
13.1 数据库事务 236
13.1.1 事务的特性 237
13.1.2 编程式与声明式事务 237
13.1.3 在JDBC中使用事务 237
13.1.4 并发访问数据可能引发的问题 239
13.1.5 事务隔离级别 241
13.2 Hibernate中的事务 243
13.2.1 在Hibernate中事务管理API 243
13.3 锁 244
13.4 Hibernate中的锁定模式 245
13.5 悲观锁 245
13.5.1 使用Query对象的setLockMode()方法设置悲观锁 245
13.5.2 使用Sessoin对象的lock()方法设置悲观锁 246
13.6 乐观锁 246
13.6.1 以版本号方式实现乐观锁 247
13.6.2 时间戳实现乐观锁 250
第14章 继承映射 252
14.1 继承关系层次一个表 253
14.1.1 创建delivery表 253
14.1.2 编写Delivery.java文件 254
14.1.3 编写PostDelivery.java文件 254
14.1.4 编写ExpressDelivery.java文件 254
14.1.5 编写Delivery.hbm.xml文件 254
14.1.6 编写HibernateTest.java文件 255
14.1.7 继承关系层次一个表的优缺点 257
14.2 每个具体类一个表 257
14.2.1 创建post_delivery和express_delivery表 258
14.2.2 编写Delivery.java文件 258
14.2.3 编写PostDelivery.java文件 259
14.2.4 编写ExpressDelivery.java文件 259
14.2.5 编写Delivery.hbm.xml文件 259
14.2.6 编写HibernateTest.java文件 260
14.2.7 每个具体类一个表的优缺点 261
14.3 每个子类一个表 261
14.3.1 创建delivery、post_delivery和express_delivery表 262
14.3.2 编写Delivery.java文件 262
14.3.3 编写PostDelivery.java文件 263
14.3.4 编写ExpressDelivery.java 263
14.3.5 编写Delivery.hbm.xml文件 263
14.3.6 编写HibernateTest.java文件 263
14.4 每个子类一个表的优缺点 265
14.5 小结 265
第15章 Hibernate过滤器 266
15.1 概念 266
15.2 配置 266
15.2.1 使用[filter-def]标签定义过滤器 266
15.2.2 使用[filter]标签声明使用过滤器 267
15.3 调用Hibernate过滤器 267
15.3.1 Session接口中与Filter对象有关的方法 267
15.3.2 调用Hibernate过滤器的示例 268
15.4 小结 269
第16章 数据拦截与事件监听 270
16.1 拦截器 270
16.1.1 Interceptor接口的方法 270
16.1.2 使用拦截器实现审计日志 271
16.2 Hibernate的事件监听 274
16.2.1 应用Hibernate事件监听器 275
16.2.2 使用监听器实现审计日志 275
16.2.3 事件监听与拦截器的比较 280
第17章 Hibernate的缓存 281
17.1 持久层缓存的概念 281
17.1.1 持久层缓存的级别 281
17.2 Hibernate的一级缓存 282
17.2.1 一级缓存的实现原理 283
17.2.2 管理一级缓存 283
17.3 Hibernate的二级缓存 284
17.3.1 二级缓存的策略 285
17.3.2 应用EHCache作为二级缓存 286
17.3.3 缓存集合对象 288
17.3.4 管理二级缓存 289
17.4 查询缓存 290
17.4.1 查询缓存的实现原理 290
17.4.2 使用查询缓存 291
17.5 应用memcached作为二级缓存 292
17.5.1 memcached 292
17.5.2 Hibernate-memcached 292
17.5.3 在Hibernate应用中使用memcached 293
17.6 缓存对get()、load()、list()和iterator()方法的影响 295
17.7 小结 296
第18章 Hibernate的性能优化 297
18.1 使用dynamic-insert与dynamic-update 297
18.1.1 应用[class]标签的dynamic-insert与dynamic-update属性 298
18.2 延迟加载 298
18.2.1 持久化对象的延迟加载 299
18.2.2 集合对象的延迟加载 301
18.2.3 属性的延迟加载 303
18.2.4 解决org.hibernate.Lazy
InitializationException违例问题 303
18.3 集合对象的抓取策略 304
18.3.1 查询抓取 305
18.3.2 子查询抓取 307
18.3.3 连接查询抓取 308
18.3.4 批量抓取 309
18.3.5 Hibernate的“1+N”问题 310
第19章 Hibernate Annotations组件 312
19.1 下载Hibernate Annotations组件 312
19.2 使用Annotations实现一对多双向关联映射 313
19.2.1 准备数据 313
19.2.2 在当前项目中添加Hibernate Annotations类库 313
19.2.3 编写Product.java和Category.java文件 313
19.2.4 编写hibernate.cfg.xml文件 317
19.2.5 编写HibernateTest.java文件 317
19.3 Hibernate Annotations组件核心注解 318
19.3.1 注解属性或者方法 318
19.3.2 Hibernate Annotations组件核心注解 318
19.3.3 注解VS映射文件 319
19.4 Hibernate EntityManager 320
19.4.1 Java Persistence API 320
19.4.2 下载Hibernate EntityManager 320
19.4.3 应用Hibernate EntityManager 320
第20章 Hibernate Search组件 323
20.1 搜索引擎 323
20.1.1 全文检索引擎 323
20.1.2 目录索引搜索引擎 324
20.1.3 元搜索引擎 324
20.2 Lucene 324
20.3 Hibernate Search组件 325
20.3.1 Hibernate Search组件的特点 325
20.3.2 使用Hibernate Search组件 325
20.4 使用Luke工具查看索引数据 330
20.5 中文分词 331
20.5.1 概念 331
20.5.2 中文分词的基本机制 331
20.5.3 Hibernate Search使用第三方中文分词组件 332
第21章 Hibernate与Struts 2 334
21.1 Struts 2框架 334
21.1.1 Struts 2框架的特点 335
21.1.2 下载Struts 2 335
21.2 编写第1个Struts 2程序 336
21.2.1 新建Web项目添加Struts类库 336
21.2.2 修改web.xml文件配置Struts2的过滤器 337
21.2.3 编写login.jsp文件 337
21.2.4 编写LoginAction.java文件 338
21.2.5 编写loginResult.jsp文件 340
21.2.6 编写struts.xml文件 340
21.2.7 项目部署后的运行效果 341
21.3 Struts 2的内部结构 342
21.3.1 Struts 2的处理流程 343
21.4 网络留言本V2.2 344
21.4.1 新建guestbookv2.2项目 344
21.4.2 所需文件列表 344
21.4.3 编写GuestbookAction.java文件 345
21.4.4 编写AdminAction.java文件 347
21.4.5 编写struts.xml文件 348
21.4.6 修改web.xml文件 349
21.4.7 修改addMessage.jsp文件 350
21.4.8 修改login.jsp文件 351
21.4.9 部署运行项目 352
第22章 Hibernate与Spring Framework 353
22.1 Spring简介 353
22.1.1 Spring的子模块 353
22.1.2 下载Spring 354
22.2 IoC容器 355
22.2.1 容器的概念 355
22.2.2 IoC设计模式 355
22.2.3 Spring的IoC容器 356
22.2.4 使用Spring IoC容器示例 356
22.3 Spring AOP 359
22.3.1 OOP的不足 359
22.3.2 AOP技术 360
22.3.3 Spring AOP 360
22.3.4 AOP的专有名词 361
22.3.5 Spring AOP中的常用通知类型 361
22.3.6 使用AspectJ 5的注解实现Spring AOP 362
22.3.7 AspectJ的切入点表达式语法 364
22.4 Spring对Hibernate的支持 365
22.4.1 简化获取SessionFactory对象 365
22.4.2 HibernateTemplate类 368
22.4.3 HibernateDaoSupport类 371
22.4.4 Spring对事务的支持 372
22.4.5 声明式事务的参数定义 373
22.4.6 使用Spring注解管理事务的示例 375
22.5 Guestbook v2.3版 377
22.5.1 新建Guestbookv2.3项目 377
22.5.2 文件列表 378
22.5.3 修改web.xml文件 378
22.5.4 修改DAO实现类 379
22.5.5 修改Servlet文件 380
22.5.6 编写ApplicationContext.xml 380
22.5.7 项目运行输出 381
22.6 小结 382
第23章 KH网络博客系统 383
23.1 系统需求分析 383
23.1.1 确定用户 383
23.1.2 系统功能 384
23.2 系统设计 384
23.2.1 系统结构设计 384
23.2.2 数据库设计 385
23.2.3 设计域模型 390
23.2.4 持久层设计 391
23.2.5 业务逻辑层设计 392
23.2.6 表现层的设计 392
23.2.7 Action类设计 393
23.2.8 权限控制设计 394
23.2.9 分页设计 394
23.2.10 数据校验设计 397
23.2.11 订阅博客功能设计 399
23.2.12 设置开发环境 399
23.2.13 Java包名与组织结构设计 400
23.3 编码实现 400
23.3.1 创建项目 400
23.3.2 域模型代码 400
23.3.3 持久层的相关代码 403
23.3.4 业务逻辑层的相关代码 412
23.3.5 表现层的相关代码 421
23.4 部署运行KH网络博客系统 440
23.5 小结 441
· · · · · · (
收起)