logo资料库

北京动力节点-Hibernate5讲义.pdf

第1页 / 共176页
第2页 / 共176页
第3页 / 共176页
第4页 / 共176页
第5页 / 共176页
第6页 / 共176页
第7页 / 共176页
第8页 / 共176页
资料共176页,剩余部分请下载后查看
第1章 Hibernate概述
1.1 什么是对象持久化
1.2 为什么要持久化
1.3 怎样实现持久化
1.3.1 对象序列化
1.3.2 JDBC
1.3.3 ORM
1.3.4 JPA框架
1.3.5 JPA、ORM与Hibernate间的关系
1.4 Hibernate框架
1.4.1 Hibernate框架下载
1.4.2 Hibernate基本Jar包
第2章 Hibernate基本技术
2.1 Hibernate工作原理
2.2 第一个Hibernate程序
2.2.1 定义持久化对象(PO)
2.2.2 配置映射文件
2.2.3 配置主配置文件
(1)配置DB连接四要素与方言
(2)配置数据源
(3)配置当前Session上下文
(4)配置自动建表
(5)配置控制台SQL输出
(6)注册映射文件
(7)主配置文件整体配置情况
2.2.4 创建数据库
2.2.5 添加日志控制文件
2.2.6 定义测试类
2.3 CURD操作
2.3.1 工具类的创建
2.3.2 CURD测试
(1)save()
(2)persist()
(3)delete()
(4)update()
(5)saveOrUpdate()
(6)get()
(7)load()
(8)对于增、删、改的底层SQL执行顺序
2.4 详解API
2.4.1 Configuration 接口
(1)new Configuration()
(2)无参configure()方法
(3)带参configure()方法
2.4.2 SessionFactory 接口
(1)SessionFactory对象特点
(2)SessionFactory对象的使用原则
2.4.3 Session接口
(1)Session对象的特点
(2)Session对象的使用原则
(3)Session对象的获取
A、openSession()方式
B、getCurrentSession()方式
C、当前Session上下文
D、为什么getCurrentSession()方式获取到的是同一个对象?
E、Session的关闭
F、总结:两种获取Session对象方式的区别
(4)Session中的常用方法
2.4.4 Transaction接口
2.4.5 总结 -- 单例、多例与线程安全问题
(1)HttpServlet
(2)HttpSession
(3)Struts2的Action
(4)Hibernate的SessionFactory
(5)Hibernate的Session
2.5 主配置文件详解
2.5.1 数据库连接设置
(1)DB连接四要素的key
(2)url取值的写法
(3)hibernate.properties文件
2.5.2 方言设置
2.5.3 自动建表设置
2.5.4 C3P0数据库连接池配置
2.5.5 注册映射文件
2.6 映射文件详解
2.6.1 标签
2.6.2 标签
2.6.3 标签
2.6.4 Hibernate常用的内置主键生成策略
(1)increment生成策略
(2)identity生成策略
(3)sequence生成策略
(4)native生成策略
(5)uuid生成策略
(6)assigned生成策略
2.7 持久对象状态管理
2.7.1 Hibernate的对象状态
2.7.2 状态转换图
2.7.3 状态转换常用方法
第3章 单表查询
3.1 API
3.1.1 Query接口
3.1.2 SQLQuery接口
3.1.3 Criteria接口
3.2 分类查询
3.2.1 查询测试前的准备工作
(1)定义查询的实体
(2)定义主配置文件
(3)定义Hibernate工具类
(4)定义测试类的setUp()
(5)准备测试数据
3.2.2 查询所有
(1)SQL查询
(2)HQL查询
(3)QBC查询
3.2.3 查询结果排序
(1)SQL查询
(2)HQL查询
(3)QBC查询
3.2.4 动态参数绑定查询
(1)SQL查询
(2)HQL查询
(3)QBC查询
3.2.5 分页查询
(1)SQL查询
(2)HQL查询
(3)QBC查询
3.2.6 模糊查询
(1)SQL查询
(2)HQL查询
(3)QBC查询
3.2.7 唯一性查询
(1)SQL查询
(2)HQL查询
(3)QBC查询
3.2.8 聚合函数查询
(1)SQL查询
(2)HQL查询
(3)QBC查询
3.2.8 投影查询
(1)SQL查询
(2)HQL查询
(3)QBC查询
3.2.9 分组查询
(1)SQL查询
(2)HQL查询
(3)QBC查询
3.2.10 Query的list()与iterate()
(1)Query的list()查询
(2)Query的iterate()查询
(3)它们的区别
(4)N + 1问题
(5)N + 1问题的避免
3.2.11 命名查询namedQuery
第4章 关联关系映射
4.1 基本概念
4.1.1 关联属性
4.1.2 级联操作
4.1.3 关联关系维护
4.1.4 预处理语句
4.1.5 关联方向
(1)单向关联
(2)双向关联
4.1.6 关联数量
4.2 关系映射
4.2.1 1:n-单向关联
代码运行分析一:
(1)运行条件
(2)运行结果
(3)过程分析
代码运行分析二:
(1)运行条件
(2)运行结果
/(3)过程分析
代码运行分析三:
(1)运行条件
(2)运行结果
/(3)过程分析
4.2.2 1:n-双向关联
代码运行分析一:
(1)运行条件
(2)运行结果
(3)过程分析
代码运行分析二:
(1)运行条件
(2)运行结果
(3)过程分析
4.2.3 自关联
(1)定义实体类
(2)定义映射文件
(3)定义测试类
4.2.4 n:1-单向关联
代码运行分析:
(1)运行条件
(2)运行结果
(3)过程分析
4.2.5 n:m-单向关联
代码运行分析:
(1)运行条件
(2)运行结果
(3)过程分析
4.2.6 n:m-双向关联
代码运行分析:
(1)运行条件
(2)运行结果
(3)过程分析
4.3 级联删除
4.3.1 cascade=“delete”
代码运行分析:
(1)运行条件
(2)运行结果
(3)过程分析
4.3.2 cascade=“delete-orphan”
代码运行分析:
(1)运行条件
(2)运行结果
(3)过程分析
第5章 多表连接查询
5.1 DB基本理论中的多表连接分类
5.1.1 笛卡儿积
5.1.2 条件连接
5.1.3 内连接
5.1.4 左外连接
5.1.5 右外连接
5.2 Hibernate支持的多表关联连接类型
5.2.1 左外连接HQL实现
5.2.2 迫切左外连接HQL实现
5.2.3 迫切左外连接HQL实现(去重)
5.2.4 左外连接去重的QBC实现
第6章 Hibernate检索优化
6.1 当前对象检索优化
6.1.1 get()方法执行代码运行分析
(1)运行条件
(2)运行结果
(3)过程分析
6.1.2 load()方法执行代码运行分析
(1)运行条件
(2)运行结果
(3)过程分析
6.1.3 load()方法默认延迟加载的修改
6.1.4 get()与load()的另一个区别
6.2 关联对象检索优化
6.2.1 多端加载优化
情况1:fetch=“join”
(1)运行条件
(2)运行结果
(3)过程分析
情况2:fetch=“select” lazy=“false”
(1)运行条件
(2)运行结果
(3)过程分析
情况3:fetch=“select” lazy=“true”
(1)运行条件
(2)运行结果
(3)过程分析
情况4:fetch=“select” lazy=“extra”
(1)运行条件
(2)运行结果
(3)过程分析
情况5:fetch=“subselect”
6.2.2 单端加载优化
情况1:fetch=“join”
(1)运行条件
(2)运行结果
(3)过程分析
情况2:fetch=“select” lazy=“false”
(1)运行条件
(2)运行结果
(3)过程分析
情况3:fetch=“select” lazy=“proxy” lazy=”false”
(1)运行条件
(2)运行结果
(3)过程分析
情况4:fetch=“select” lazy=“proxy” lazy=”true”
(1)运行条件
(2)运行结果
(3)过程分析
情况5:fetch=“select” lazy=“no-proxy”
第7章 Hibernate缓存机制
7.1 缓存范围分类
7.1.1 事务范围缓存
7.1.2 应用范围缓存
7.1.3 集群范围缓存
7.2 一级缓存
7.2.1 什么是一级缓存?
7.2.2 一级缓存管理相关方法
7.2.3 一级缓存的存在性证明
7.3 快照
7.3.1 什么是快照?
7.3.2 Session的刷新与同步
7.3.3 修改缓存刷新模式(了解)
7.4 二级缓存
7.4.1 Hibernate缓存执行顺序
7.4.2 二级缓存内容分类
7.4.3 二级缓存的并发访问策略
7.4.4 第三方插件EHCache用法
Step1:导入Jar包
Step2:修改主配置文件
Step3:添加ehcache.xml
(1)标签
(2)标签
Step4:指定缓存内容
(1)在映射文件中指定缓存内容
(2)在主配置文件中指定缓存内容
7.4.5 类缓存
7.4.6 集合缓存
(1)运行条件
(2)测试过程及原理
7.4.7 Query缓存
(1)Query查询结果会存放于缓存中
(2)Query查询不会从缓存中读取数据
(3)使用Query缓存的步骤
A、开启Query缓存总开关
B、为每个Query查询打开子开关
C、要求查询语句完全相同
7.4.8 绕过一级缓存的修改
(1)绕过一级缓存的判断依据
(2)该修改是否绕过二级缓存?
(3)修改时间戳
7.4.9 与二级缓存管理相关的方法
第8章 事务相关内容
8.1 数据库事务复习
8.1.1 事务四大特性(简称ACID)
(1)原子性(Atomicity)
(2)一致性(Consistency)
(3)隔离性(Isolation)
(4)持久性(Durability)
8.1.2 事务的并发问题
(1)读并发
(2)写并发
8.1.3 读并发问题
(1)脏读
(2)不可重复读
(3)幻读
8.1.4 事务的隔离级别
8.1.5 写并发问题
(1)第一类丢失更新
(2)第二类丢失更新
8.1.6 加锁机制
(1)乐观锁
(2)悲观锁
8.2 Hibernate并发问题解决
8.2.1 设置Hibernate事务隔离级别
8.2.2 Hibernate实现乐观锁
8.2.3 Hibernate实现悲观锁
(1)添加排他锁
(2)添加共享锁
第9章 Hibernate注解式开发
9.1 Hibernate基本注解
9.1.1 类级注解
(1)@Entity
(2)@Table
9.1.2 属性级注解
(1)主键相关注解
A、@Id
B、@GeneratedValue
(2)普通属性相关注解
A、@Column
B、@Basic
C、@Transient
9.1.3 程序举例
9.2 关联关系映射注解
9.2.1 一对多单向关联
9.2.2 一对多双向关联
9.2.3 自关联
9.2.4 多对一单向关联
9.2.5 多对多单向关联
9.2.6 多对多双向关联
9.3 二级缓存注解@Cache
Hibernate5 框架技术 课程讲义 北京动力节点教育培训公司 主讲:Reyco www.bjpowernode.com
Hibernate5 讲义 第 1 章 Hibernate 概述 Hibernate 是一个开放源代码的 ORM(对象关系映射)框架,它对 JDBC 进行了非常轻 量级的对象封装,使得 Java 程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate 可以应用在任何使用 JDBC 的场合,既可以在 Java 的客户端程序使用,也可以在 Servlet/JSP 的 Web 应用中使用。 ---- 百度百科《Hibernate》 1.1 什么是对象持久化 所谓持久化(Persistence),即把数据(如内存中的对象)保存到持久化设备,即可永 久保存的存储设备中(如磁盘)。 持久化的主要应用是将内存中的数据存储到关系型的数据库中,当然也可以存储在磁盘 文件中、XML 数据文件中等。 1.2 为什么要持久化 (1)内存不能持久; (2)内存容量有限(内存是用于存放计算数据的); (3)业务数据共享的需要(需要公共的持久设备); (4)为了使用大规模的检索(所以要将数据改为适合大规模检索的格式); (5)数据管理的需要(安全、备份) 1.3 怎样实现持久化 1.3.1 对象序列化 即实现了 Serializable 接口的类。适合于少量的对象进行暂时的持久化,适合于在网络 上传输对象。但不符合企业级应用的需要。因为企业应用中对数据的要求是大量的、长时间 保存的、需要进行大规模查询。 1.3.2 JDBC 优点:功能完备、从理论上说效率是最高的;可以存储海量的数据并且适合进行大规模 2
检索; 缺点:开发效率和维护效率低;开发难度大,代码量大,占到到总代码量的 1/3,或 1/2; 1.3.3 ORM ORM,即 Object-Relationship Mapping,对象关系映射。它是一种解决问题的思路,是 一种思想。它的实质就是将关系数据库中的业务数据用对象的形式表示出来,并通过面向对 象的方式将这些对象组织起来,以实现系统业务逻辑。或者说,ORM 就是内存中的对象与 数据库中的数据间的映射关系。 ORM 实现框架的特点:开源的,实现了 JDBC 的封装, 实现了简单的 API,轻量级解决 方案,持久化对象是一个 POJO 类。最有名的 ORM 框架就是 Hibernate。 1.3.4 JPA 框架 JPA,Java Persistence API,是 Java EE 5 的标准 ORM 接口。它是一种规范,一套接口, 但不是实现。用于实现这一规范的 ORM 很多,其中 Hibernate 就是之一。 1.3.5 JPA、ORM 与 Hibernate 间的关系 JPA、ORM 与 Hibernate 间的关系是,ORM 是一种思想。JPA 则是这种思想的具体的表 现形式,是以 Java 语法规范表现出来的一种形式,是一套标准接口。Hibernate 则是这套接 口的具体实现。 1.4 Hibernate 框架 Hibernate 原本是 JBOSS 旗下的产品,2006 年 JBOSS 被 Red Hat 收购,变为了红帽公司 的产品。 1.4.1 Hibernate 框架下载 Hibernate 官网:http://hibernate.org 3
1.4.2 Hibernate 基本 Jar 包 调试 Hibernate 程序所需要的基本 Jar 包,在 Hibernate 框架解压目录的 lib 目录下。 (1)reqired 目录下所有 Jar (2)optional/c3p0 目录下所有 Jar (3)optional/ehcache/slf4j-api-1.6.1.jar (4)jpa-metamodel-generator 目录下所有 Jar (5)jpa/hibernate-entitymanager-5.0.1.Final.jar 当然,还需要一些其它的辅助 Jar 包。 (1)junit-4.9.jar (2)slf4j-log4j12-1.7.12.jar 与 log4j-1.2.17.jar (3)mysql 驱动 4
第 2 章 Hibernate 基本技术 2.1 Hibernate 工作原理 2.2 第一个 Hibernate 程序 举例:primary 2.2.1 定义持久化对象(PO) 2.2.2 配置映射文件 配置映射文件,即配置两个关系:实体类与数据库中表的映射关系,属性与表中字段的 映射关系。 Hibernate 中主要涉及两个配置文件:主配置文件与映射文件。这两个配置文件的约束 文件在 Hibernate 核心 Jar 文件 hibernate-core-5.0.1.Final.jar 中的 or.hibernate 包中: 5
主配置文件的约束: 映射文件的约束: 6
2.2.3 配置主配置文件 (1)配置 DB 连接四要素与方言 主 配 置 文 件 中 的 数 据 库 连 接 相 关 属 性 值 可 在 hibernate 框 架 解 压 目 录 下 的 project/etc/hibernate.properties 文件中找到。 DB 连接四要素与方言的 key: (2)配置数据源 数据源的 key: 7
注意,若不指定第三方数据源,将使用 Hibernate 内置的数据源。 (3)配置当前 Session 上下文 指定当前 Session 上下文为线程,即在同一线程内所使用的 Session 为同一 Session。 (4)配置自动建表 (5)配置控制台 SQL 输出 8
分享到:
收藏