第1章 HIBERNATE的起源
1.1 ORM框架
1.2 Hibernate
1.3 Hibernate的下载
1.4 使用Hibernate的第一个例子
1.4.1 建立guestbook表
1.4.2 新建chapter01_first项目
1.4.3 项目文件列表
1.4.4 编写hibernate.cfg.xml
1.4.5 编写Guestbook.java
1.4.6 编写Guestbook.hbm.xml
1.4.7 HibernateTest.java
1.4.8 运行HibernateTest程序
1.4.9 chapter01_first项目的运行过程
本章小结
习题
第2章 HIBERNATE的核心接口与类
2.1 Configuration类
2.1.1 Hibernate配置文件
2.1.2 应用程序中设定新的属性值
2.1.3 Hibernate的核心配置信息
2.1.4 数据库方言类(DB Dialect Class)
2.2 SessionFactory 接口
2.3 Session接口
2.3.1 save()方法
2.3.2 get()方法
2.3.3 load()方法
2.3.4 update()方法
2.3.5 delete()方法
2.4 Transaction接口
2.5 Query接口
2.6 Criteria接口
2.7 使用MyEclipse可视化开发Hibernate例子
2.7.1 设置MyEclipse连接Oracle数据库
2.7.2 新建项目并为项目增加Hibernate开发支持
2.7.3 自动生成Guestbook类与映射文件
2.7.4 编写HibernateSessionFactoryUtil.java文件
2.7.5 编写HibernateTest.java
2.7.6 程序运行结果
2.7.7 使用 HQL 编辑器调试HQL语句
2.8 设置Hibernate使用连接池
2.8.1 Hibernate设置使用Tomcat中的连接池
2.8.2 Hibernate设置使用C3P0连接池
2.8.3 Hibernate设置使用自己编写的连接池
2.9 Hibernate使用C3P0连接池
2.10 网络留言本V2.0
本章小结
习题
第3章 标识符属性生成策略与对象识别
3.1 数据库中的主键
3.1.1 自然主键
3.1.2 代理主键
3.2 标识符属性
3.3 标识符属性的生成策略
3.3.1 increment生成策略
3.3.2 identity生成策略
3.3.3 sequence生成策略
3.3.4 hilo生成策略
3.3.5 seqhilo生成策略
3.3.6 uuid生成策略
3.3.7 guid生成策略
3.3.8 native生成策略
3.3.9 assigned生成策略
3.3.10 foreign生成策略
3.3.11 标识符属性生成策略的选择
3.4 映射复合主键
3.4.1 数据准备
3.4.2 使用属性映射复合主键
3.4.3 使用主键类映射复合主键
3.5 对象识别
3.5.1 Java中的对象识别
3.5.2 数据库中数据的识别
3.5.3 Hibernate中的持久化对象的识别
本章小结
习题
第4章 持久化对象生命周期
4.1 持久化对象生命周期的状态
4.1.1 Transient状态
4.1.2 Persistent状态
4.1.3 Detached状态
4.1.4 Removed状态
4.1.5 Session对象的"脏"数据检查
4.2 Session接口的核心方法
4.2.1 saveOrUpdate()方法
4.2.2 merge()方法
4.2.3 flush()方法
4.2.4 close()方法
4.3 不可更改的持久化对象
本章小结
习题
第5章 OSIV与泛型DAO模式
5.1 Open Session In View(OSIV)模式
5.1.1 使用Servlet过滤器实现OSIV模式
5.1.2 配置web.xml文件
5.2 泛型DAO的设计与实现
5.2.1 编写泛型DAO接口
5.2.2 编写泛型DAO的实现类
5.2.3 使用GenericDao接口
5.2.4 使用GenericDaoHibernate类
5.3 网络留言本V2.1
本章小结
习题
第6章 HIBERNATE的集合映射
6.1 Set映射
6.1.1 Set接口
6.1.2 Set映射
6.2 List映射
6.2.1 List接口
6.2.2 List映射
6.3 Bag映射
6.4 IdBag映射
6.5 Map映射
6.5.1 Map接口
6.5.2 HashMap
6.5.3 LinkedHashMap
6.5.4 TreeMap
6.5.5 Map映射
6.6 集合映射的排序
6.6.1 利用<set>或<map>标签的sort属性排序
6.6.2 利用SQL的order by子句排序
本章小结
习题
第7章 组件(COMPONENT)映射
7.1 组件(Component)映射的单向关联
7.2 组件映射的双向关联
7.3 组件集合映射
本章小结
习题
第8章 映射多对一(一对多)关联关系
8.1 多对一单向关联
8.2 一对多单向关联
8.3 级联(cascade)
8.4 一对多双向关联
8.5 控制反转(Inverse)
本章小结
习题
第9章 映射一对一关联关系
9.1 共享主键关联
9.2 唯一外键关联
本章小结
习题
第10章 映射多对多关联关系
10.1 多对多单向关联
10.2 多对多双向关联
10.3 多对多关联中使用组件(Component)集合映射
10.4 多对多关联分拆成两个一对多关联
本章小结
习题
第11章 CRITERIA查询
11.1 准备数据
11.2 Criteria的基本使用
11.2.1 Criteria接口的核心方法
11.2.2 Criterion接口
11.2.3 对查询结果进行排序
11.2.4 实现分页显示数据
11.2.5 只查询一条记录
11.2.6 通过所关联的对象建立查询条件
11.2.7 Restrictions类
11.2.8 条件"或"方式组合查询条件
11.2.9 使用原生SQL语句设定查询条件
11.2.10 统计函数查询
11.2.11 统计函数组合查询条件
11.2.12 获取多个统计函数的值
11.2.13 分组查询
11.2.14 分组统计
11.2.15 给分组统计结果指定别名
11.2.16 投影查询
11.2.17 使用Property类的forName()方法实现分组统计
11.3 根据示例对象进行查询
本章小结
习题
第12章 HQL与NATIVE SQL查询
12.1 准备数据
12.2 Query接口
12.3 HQL基础
12.3.1 查询所有持久化对象
12.3.2 投影查询
12.3.3 使用别名
12.3.4 使用distinct
12.3.5 限定查询的条件
12.3.6 数据排序
12.3.7 使用参数占位符
12.3.8 使用统计函数
12.3.9 使用函数
12.4 HQL的批量更新
12.5 HQL的批量删除
12.6 HQL中的连接查询
12.6.1 使用交叉连接
12.6.2 使用内连接
12.6.3 使用左外连接
12.6.4 使用右外连接
12.6.5 迫切内连接
12.6.6 迫切左外连接
12.7 命名的HQL
12.8 使用SQL
12.8.1 SQL查询
12.8.2 SQL更新记录
12.8.3 SQL删除记录
12.8.4 命名的SQL
12.9 Hibernate中直接使用JDBC
本章小结
习题
第13章 HIBERNATE的事务管理
13.1 数据库事务
13.1.1 事务的特性
13.1.2 编程式与声明式事务
13.1.3 JDBC中使用事务
13.1.4 数据并发访问可能引发的问题
13.1.5 事务隔离级别
13.1.6 事务隔离级别的选择
13.1.7 Oracle中的事务隔离级别
13.2 Hibernate中的事务
13.3 "锁"
13.4 Hibernate中的锁定模式
13.5 悲观锁
13.5.1 Query对象的setLockMode()方法设置悲观锁
13.5.2 Session对象的lock()方法设置悲观锁
13.6 乐观锁
13.6.1 版本号方式实现乐观锁
13.6.2 时间戳实现乐观锁
本章小结
习题
第14章 HIBERNATE的缓存
14.1 持久层缓存的概念
14.1.1 持久层缓存的级别
14.2 Hibernate的一级缓存
14.2.1 一级缓存的实现原理
14.2.2 一级缓存的管理
14.3 Hibernate的二级缓存
14.3.1 二级缓存的策略
14.3.2 应用EHCache作为二级缓存
14.3.3 二级缓存缓存集合对象
14.3.4 二级缓存的管理
14.4 查询缓存(Query Cache)
14.4.1 查询缓存的实现原理
14.4.2 使用查询缓存
14.5 缓存对get()、load()、list()和iterator()方法的影响
14.6 小结
本章小结
习题
第15章 HIBERNATE性能优化
15.1 使用dynamic-insert与dynamic-update
15.2 延迟加载(Lazy Loading)
15.2.1 持久化对象的延迟加载
15.2.2 集合对象的延迟加载
15.2.3 属性的延迟加载
15.2.4 解决org.hibernate.LazyInitializationException
15.3 Hibernate的"1+N"问题
本章小结
习题
第16章 HIBERNATE ANNOTATIONS
16.1 使用Annotations实现一对多双向关联映射
16.1.1 准备数据
16.1.2 当前项目增加Hibernate Annotations类库
16.1.3 编写Product.java和Category.java
16.1.4 编写hibernate.cfg.xml
16.1.5 编写HibernateTest.java
16.2 Hibernate Annotations核心注解
16.2.1 注解在属性或者方法上
16.2.2 Hibernate Annotations核心注解释义
16.2.3 注解VS映射文件