标题：Hibernate开发与实战
内容简介
本书采用理论阐述、实例项目、视频讲解相结合的方式，全面讲解了Hibernate Core、Hibernate、Annotations、Hibernate Search、Hibernate EntityManager等内容。
全书共23章。第1～18章，讲解Hibernate Core的内容。第19章讲解Hibernate Annotations内容。第19章讲解Hibernate Anonations和Hibernate EntityManager的内容。第20章讲解Hibernate Search的内容。第21章讲解Hibernate与Struts 2框架如何进行整合开发。第22章讲解Hibernate与Spring框架如何进行整合开发。第23章，则详细讲解如何组合运用Hibernate、Struts 2和Spring框架，开发一个完整的网络博客系统。
全书结构严谨，层次清晰，语言生动，论述精准而深刻，程序实例丰富实用。本书需要读者具有Java编程语言和HTML的基础。本书还提供了大量的实例代码，读者可以自由使用，这些代码非常实用，适合解决Hibernate开发中的实际问题。本书不仅适合用作普通高校或职业培训教材，更是Hibernate初学者和开发者的首选参考书。
图书目录
第1章 Hibernate起源
1.1 ORM框架
1.2 ORM核心理念
1.3 持久层概念
1.4 Hibernate
1.4.1 Hibernate Core
1.4.2 Hibernate Annotations
1.4.3 Hibernate EntityManager
1.4.4 Hibernate Search
1.4.5 Hibernate Shards
1.4.6 Hibernate Validator
1.4.7 Hibernate Tools
1.4.8 NHibernate
1.4.9 JBoss Seam
1.5 下载Hibernate
1.6 使用Hibernate的第1个例子
第2章 Hibernate的核心接口与类
2.1 Configuration类
2.1.1 Hibernate配置文件
2.1.2 在应用程序中设置新的属性值
2.1.3 Hibernate的核心配置信息
2.1.4 数据库方言类
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.8 Hibernate应用的开发方式
2.8.1 自底向上，从数据库表到持久化类
2.8.2 自上向下，持久化类到数据库表
2.8.3 从中间出发，向上与向下发展
2.9 设置Hibernate使用连接池
2.10 使用C3P0连接池
第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中的持久化对象
3.6 Commons lang buider
3.6.1 安装Commonclipse
3.6.2 使用Commonclipse
第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 不可更改的持久化对象
第7章 组件映射　　7.1 组件（Component）映射的单向关联　　7.1.1 数据准备　　7.1.2 编写Profile.java文件　　7.1.3 编写User.java文件　　7.1.4 编写User.hbm.xml文件　　7.1.5 编写HibernateTest.java文件　　7.1.6 程序运行输出　　7.2 组件映射的双向关联　　7.3 组件集合映射　　7.3.1 数据准备　　7.3.2 编写Image.java文件　　7.3.3 编写Product.java文件　　7.3.4 编写Product.hbm.xml文件　　7.3.5 编写HibernateTest.java文件　　7.3.6 组件集合映射的双向关联　　第8章 映射多对一及一对多关联关系　　8.1 多对一单向关联　　8.1.1 数据准备　　8.1.2 编写Category.java与Category.hbm.xml 文件　　8.1.3 编写Product.java与Product.hbm.xml文件　　8.1.4 编写HibernateTest.java文件　　8.1.5 outer-join属性　　8.2 一对多单向关联　　8.2.1 数据准备　　8.2.2 编写Product.java与Product.hbm.xml文件　　8.2.3 编写Category.java与Category.hbm.xml文件　　8.2.4 编写HibernateTest.java文件　　8.3 级联　　8.4 一对多双向关联　　8.4.1 数据准备　　8.4.2 编写Product.java与Product.hbm.xml文件　　8.4.3 编写Category.java与Category.hbm.xml文件　　8.4.4 编写HibernateTest.java文件　　8.5 控制反转（Inverse）　　第9章 映射一对一关联关系　　9.1 共享主键关联　　9.1.1 数据准备　　9.1.2 编写User.java与User.hbm.xml文件　　9.1.3 编写Profile.java与Profile.hbm.xml文件　　9.1.4 编写HibernateTest.java文件　　9.2 唯一外键关联　　9.2.1 准备数据　　9.2.2 编写Profile.java与Profile.hbm.xml 文件　　9.2.3 编写User.java与User.hbm.xml文件　　9.2.4 编写HibernateTest.java 文件　　第10章 映射多对多关联关系　　10.1 多对多单向关联　　10.1.1 准备数据　　10.1.2 编写Product.java与Product.hbm.xml文件　　10.1.3 编写Order.java与Order.hbm.xml文件　　10.1.4 Order与Product的类图　　10.1.5 编写HibernateTest.java文件　　10.2 多对多双向关联　　10.2.1 准备数据　　10.2.2 编写Order.java与Order.hbm.xml 文件　　10.2.3 编写Product.java与Product.hbm.xml文件　　10.2.4 Order与Product类的类图　　10.2.5 编写HibernateTest.java文件　　10.3 在多对多关联中使用组件集合映射　　10.3.1 准备数据　　10.3.2 编写Product.java与Product.hbm.xml 文件　　10.3.3 编写OrderItem.java文件　　10.3.4 编写Order.java与Order.hbm.xml文件　　10.3.5 Product、Order与OrderItem的类图　　10.3.6 编写HibernateTest.java文件　　10.4 分拆多对多关联为两个一对多关联　　10.4.1 数据准备　　10.4.2 编写Product.java与Product.hbm.xml文件　　10.4.3 编写OrderItem.java与OrderItem.hbm.xml文件　　10.4.4 编写Order.java与Order.hbm.xml文件　　10.4.5 编写HibernateTest.java文件　　第11章 Criteria查询　　11.1 准备数据　　11.1.1 创建guestbook、product和category表　　11.1.2 在guestbook、product和category表中添加演示数据　　11.1.3 实例文件　　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 使用DetachedCriteria对象实现离线查询　　11.4 根据示例对象查询　　第12章 HQL与Native SQL查询　　12.1 准备数据　　12.2 Query接口　　12.2.1 list（）方法　　12.2.2 iterate（）方法　　12.2.3 选择list（）和iterate（）方法　　12.2.4 使用setMaxResults（）和setFirstResult（）方法实现分页　　12.2.5 使用uniqueResult（）方法读取唯一记录　　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.5.1 使用交叉连接　　12.5.2 使用内连接　　12.5.3 使用左外连接　　12.5.4 使用右外连接　　12.5.5 迫切内连接　　12.5.6 迫切左外连接　　12.6 命名的HQL　　12.7 使用SQL　　12.7.1 SQL查询　　12.7.2 SQL更新记录　　12.7.3 SQL删除记录　　12.7.4 命名的SQL　　12.7.5 调用存储过程　　12.8 使用SQLQuery对象实现动态表映射　　12.8.1 准备数据　　12.8.2 编写LogInfo.java文件　　12.8.3 编写LogInfo.hbm.xml文件　　12.8.4 编写HibernateTest.java文件　　12.9 在Hibernate中调用数据库存储过程　　12.9.1 准备数据　　12.9.2 调用数据库存储过程　　12.10 在Hibernate中使用JDBC　　12.10.1 准备数据　　12.10.2 调用数据库存储过程　　第13章 Hibernate的事务管理　　13.1 数据库事务　　13.1.1 事务的特性　　13.1.2 编程式与声明式事务　　13.1.3 在JDBC中使用事务　　13.1.4 并发访问数据可能引发的问题　　13.1.5 事务隔离级别　　13.2 Hibernate中的事务　　13.2.1 在Hibernate中事务管理API　　13.3 锁　　13.4 Hibernate中的锁定模式　　13.5 悲观锁　　13.5.1 使用Query对象的setLockMode（）方法设置悲观锁　　13.5.2 使用Sessoin对象的lock（）方法设置悲观锁　　13.6 乐观锁　　13.6.1 以版本号方式实现乐观锁　　13.6.2 时间戳实现乐观锁　　第14章 继承映射　　14.1 继承关系层次一个表　　14.1.1 创建delivery表　　14.1.2 编写Delivery.java文件　　14.1.3 编写PostDelivery.java文件　　14.1.4 编写ExpressDelivery.java文件　　14.1.5 编写Delivery.hbm.xml文件　　14.1.6 编写HibernateTest.java文件　　14.1.7 继承关系层次一个表的优缺点　　14.2 每个具体类一个表　　14.2.1 创建post_delivery和express_delivery表　　14.2.2 编写Delivery.java文件　　14.2.3 编写PostDelivery.java文件　　14.2.4 编写ExpressDelivery.java文件　　14.2.5 编写Delivery.hbm.xml文件　　14.2.6 编写HibernateTest.java文件　　14.2.7 每个具体类一个表的优缺点　　14.3 每个子类一个表　　14.3.1 创建delivery、post_delivery和express_delivery表　　14.3.2 编写Delivery.java文件　　14.3.3 编写PostDelivery.java文件　　14.3.4 编写ExpressDelivery.java　　14.3.5 编写Delivery.hbm.xml文件　　14.3.6 编写HibernateTest.java文件　　14.4 每个子类一个表的优缺点　　14.5 小结　　第15章 Hibernate过滤器　　15.1 概念　　15.2 配置　　15.2.1 使用标签定义过滤器　　15.2.2 使用标签声明使用过滤器　　15.3 调用Hibernate过滤器　　15.3.1 Session接口中与Filter对象有关的方法　　15.3.2 调用Hibernate过滤器的示例　　15.4 小结　　第16章 数据拦截与事件监听　　16.1 拦截器　　16.1.1 Interceptor接口的方法　　16.1.2 使用拦截器实现审计日志　　16.2 Hibernate的事件监听　　16.2.1 应用Hibernate事件监听器　　16.2.2 使用监听器实现审计日志　　16.2.3 事件监听与拦截器的比较　　第17章 Hibernate的缓存　　17.1 持久层缓存的概念　　17.1.1 持久层缓存的级别　　17.2 Hibernate的一级缓存　　17.2.1 一级缓存的实现原理　　17.2.2 管理一级缓存　　17.3 Hibernate的二级缓存　　17.3.1 二级缓存的策略　　17.3.2 应用EHCache作为二级缓存　　17.3.3 缓存集合对象　　17.3.4 管理二级缓存　　17.4 查询缓存　　17.4.1 查询缓存的实现原理　　17.4.2 使用查询缓存　　17.5 应用memcached作为二级缓存　　17.5.1 memcached　　17.5.2 Hibernate-memcached　　17.5.3 在Hibernate应用中使用memcached　　17.6 缓存对get（）、load（）、list（）和iterator（）方法的影响　　17.7 小结　　第18章 Hibernate的性能优化　　18.1 使用dynamic-insert与dynamic-update　　18.1.1 应用标签的dynamic-insert与dynamic-update属性　　18.2 延迟加载　　18.2.1 持久化对象的延迟加载　　18.2.2 集合对象的延迟加载　　18.2.3 属性的延迟加载　　18.2.4 解决org.hibernate.LazyInitializationException违例问题　　18.3 集合对象的抓取策略　　18.3.1 查询抓取　　18.3.2 子查询抓取　　18.3.3 连接查询抓取　　18.3.4 批量抓取　　18.3.5 Hibernate的“1+N”问题　　第19章 Hibernate Annotations组件　　19.1 下载Hibernate Annotations组件　　19.2 使用Annotations实现一对多双向关联映射　　19.2.1 准备数据　　19.2.2 在当前项目中添加Hibernate Annotations类库　　19.2.3 编写Product.java和Category.java文件　　19.2.4 编写hibernate.cfg.xml文件　　19.2.5 编写HibernateTest.java文件　　19.3 Hibernate Annotations组件核心注解　　19.3.1 注解属性或者方法　　19.3.2 Hibernate Annotations组件核心注解　　19.3.3 注解VS映射文件　　19.4 Hibernate EntityManager　　19.4.1 Java Persistence API　　19.4.2 下载Hibernate EntityManager　　19.4.3 应用Hibernate EntityManager　　第20章 Hibernate Search组件　　20.1 搜索引擎　　20.1.1 全文检索引擎　　20.1.2 目录索引搜索引擎　　20.1.3 元搜索引擎　　20.2 Lucene　　20.3 Hibernate Search组件　　20.3.1 Hibernate Search组件的特点　　20.3.2 使用Hibernate Search组件　　20.4 使用Luke工具查看索引数据　　20.5 中文分词　　20.5.1 概念　　20.5.2 中文分词的基本机制　　20.5.3 Hibernate Search使用第三方中文分词组件　　第21章 Hibernate与Struts 2　　21.1 Struts 2框架　　21.1.1 Struts 2框架的特点　　21.1.2 下载Struts 2　　21.2 编写第1个Struts 2程序　　21.2.1 新建Web项目添加Struts类库　　21.2.2 修改web.xml文件配置Struts2的过滤器　　21.2.3 编写login.jsp文件　　21.2.4 编写LoginAction.java文件　　21.2.5 编写loginResult.jsp文件　　21.2.6 编写struts.xml文件　　21.2.7 项目部署后的运行效果　　21.3 Struts 2的内部结构　　21.3.1 Struts 2的处理流程　　21.4 网络留言本V2.2　　21.4.1 新建guestbookv2.2项目　　21.4.2 所需文件列表　　21.4.3 编写GuestbookAction.java文件　　21.4.4 编写AdminAction.java文件　　21.4.5 编写struts.xml文件　　21.4.6 修改web.xml文件　　21.4.7 修改addMessage.jsp文件　　21.4.8 修改login.jsp文件　　21.4.9 部署运行项目　　第22章 Hibernate与Spring Framework　　22.1 Spring简介　　22.1.1 Spring的子模块　　22.1.2 下载Spring　　22.2 IoC容器　　22.2.1 容器的概念　　22.2.2 IoC设计模式　　22.2.3 Spring的IoC容器　　22.2.4 使用Spring IoC容器示例　　22.3 Spring AOP　　22.3.1 OOP的不足　　22.3.2 AOP技术　　22.3.3 Spring AOP　　22.3.4 AOP的专有名词　　22.3.5 Spring AOP中的常用通知类型　　22.3.6 使用AspectJ 5的注解实现Spring AOP　　22.3.7 AspectJ的切入点表达式语法　　22.4 Spring对Hibernate的支持　　22.4.1 简化获取SessionFactory对象　　22.4.2 HibernateTemplate类　　22.4.3 HibernateDaoSupport类　　22.4.4 Spring对事务的支持　　22.4.5 声明式事务的参数定义　　22.4.6 使用Spring注解管理事务的示例　　22.5 Guestbook v2.3版　　22.5.1 新建Guestbookv2.3项目　　22.5.2 文件列表　　22.5.3 修改web.xml文件　　22.5.4 修改DAO实现类　　22.5.5 修改Servlet文件　　22.5.6 编写ApplicationContext.xml　　22.5.7 项目运行输出　　22.6 小结　　第23章 KH网络博客系统　　23.1 系统需求分析　　23.1.1 确定用户　　23.1.2 系统功能　　23.2 系统设计　　23.2.1 系统结构设计　　23.2.2 数据库设计　　23.2.3 设计域模型　　23.2.4 持久层设计　　23.2.5 业务逻辑层设计　　23.2.6 表现层的设计　　23.2.7 Action类设计　　23.2.8 权限控制设计　　23.2.9 分页设计　　23.2.10 数据校验设计　　23.2.11 订阅博客功能设计　　23.2.12 设置开发环境　　23.2.13 Java包名与组织结构设计　　23.3 编码实现　　23.3.1 创建项目　　23.3.2 域模型代码　　23.3.3 持久层的相关代码　　23.3.4 业务逻辑层的相关代码　　23.3.5 表现层的相关代码　　23.4 部署运行KH网络博客系统　　23.5 小结