logo资料库

动力节点Hibernate5讲义.pdf

第1页 / 共161页
第2页 / 共161页
第3页 / 共161页
第4页 / 共161页
第5页 / 共161页
第6页 / 共161页
第7页 / 共161页
第8页 / 共161页
资料共161页,剩余部分请下载后查看
第1章 Hibernate概述
一、什么是 对象持久化
二、为什么要持久化
三、怎样实现持久化
1、对象序列化
2、JDBC
3、ORM
4、JPA框架
5、JPA、ORM与Hibernate间的关系
四、Hibernate框架
1、Hibernate框架下载
2、Hibernate基本Jar包
第2章 Hibernate基本技术
一、Hibernate工作原理
二、第一个Hibernate程序
1、定义持久化对象(PO)
2、配置映射文件
3、配置主配置文件
4、创建数据库
5、定义测试类
6、修改测试类
7、修改主配置文件
三、CURD操作
1、工具类的创建
2、CURD测试
(1)save()
(2)persist()
(3)delete()
(4)update()
(5)saveOrUpdate()
(6)get()
(7)load()
(8)对于增、删、改的底层SQL执行顺序
四、详解API
1、Configuration 接口
2、SessionFactory 接口
(1)SessionFactory对象特点
(2)SessionFactory对象的使用原则
3、Session接口
(1)Session对象的特点
(2)Session对象的使用原则
(3)Session对象的获取
(4)两种获取Session对象方式的区别
(5)Session中的常用方法
4、Transaction接口
【总结】单例、多例与线程安全问题
(1)HttpServlet
(2)HttpSession
(3)Struts2的Action
(4)Hibernate的SessionFactory
(5)Hibernate的Session
五、主配置文件详解
1、数据库连接设置
2、方言设置
3、自动建表设置
4、C3P0数据库连接池配置
六、映射文件详解
1、标签
2、标签
3、标签
4、Hibernate常用的内置主键生成策略
(1)increment生成策略
(2)identity生成策略
(3)sequence生成策略
(4)native生成策略
(5)uuid生成策略
(6)assigned生成策略
第3章 单表查询
一、API
1、Query接口
2、SQLQuery接口
3、Criteria接口
二、分类查询
1、查询测试前的准备工作
(1)定义查询的实体
(2)定义主配置文件
(3)定义Hibernate工具类
(4)定义测试类的setUp()
(5)准备测试数据
2、查询所有
(1)SQL查询
(2)HQL查询
(3)QBC查询
3、查询结果排序
(1)SQL查询
(2)HQL查询
(3)QBC查询
4、动态参数绑定查询
(1)SQL查询
(2)HQL查询
(3)QBC查询
5、分页查询
(1)SQL查询
(2)HQL查询
(3)QBC查询
6、模糊查询
(1)SQL查询
(2)HQL查询
(3)QBC查询
7、唯一性查询
(1)SQL查询
(2)HQL查询
(3)QBC查询
8、聚合函数查询
(1)SQL查询
(2)HQL查询
(3)QBC查询
8、投影查询
(1)SQL查询
(2)HQL查询
(3)QBC查询
9、分组查询
(1)SQL查询
(2)HQL查询
(3)QBC查询
10、Query的list()与iterate()
(1)Query的list()查询
(2)Query的iterate()查询
(3)它们的区别
(4)N + 1问题
(5)N + 1问题的避免
第4章 持久对象状态管理
一、Hibernate的对象状态
二、状态转换
1、状态转换图
2、对象状态
3、状态转换常用方法
4、Hibernate的同步机制
三、一级缓存
四、快照
第5章 关联关系映射
一、基本概念
1、关联属性
2、关联关系维护
3、预处理语句
4、级联操作
5、关联方向
(1)单向关联
(2)双向关联
6、关联数量
二、关系映射
1、1:n-单向关联
代码运行分析一:
(1)运行条件
(2)运行结果
(3)过程分析
代码运行分析二:
(1)运行条件
(2)运行结果
(3)过程分析
代码运行分析三:
(1)运行条件
(2)运行结果
(3)过程分析
2、1:n-双向关联
代码运行分析一:
(1)运行条件
(2)运行结果
(3)过程分析
代码运行分析二:
(1)运行条件
(2)运行结果
(3)过程分析
3、自关联
定义实体类:
定义映射文件:
定义测试类:
4、n:1-单向关联
代码运行分析:
(1)运行条件
(2)运行结果
(3)过程分析
5、n:m-单向关联
代码运行分析:
(1)运行条件
(2)运行结果
(3)过程分析
6、n:m-双向关联
代码运行分析:
(1)运行条件
(2)运行结果
(3)过程分析
三、级联删除
1、cascade=“delete”
代码运行分析:
(1)运行条件
(2)运行结果
(3)过程分析
2、cascade=“delete-orphan”
代码运行分析:
(1)运行条件
(2)运行结果
(3)过程分析
第6章 多表连接查询
一、DB基本理论中的多表连接分类
1、笛卡儿积
2、条件连接
3、内连接
4、左外连接
5、右外连接
二、Hibernate支持的多表关联连接类型
1、左外连接HQL实现
2、迫切左外连接HQL实现
3、迫切左外连接HQL实现(去重)
4、左外连接QBC实现(去重)
5、命名查询namedQuery
第7章 Hibernate检索优化
一、当前对象检索优化
1、 get()方法执行代码运行分析:
(1)运行条件
(2)运行结果
(3)过程分析
2、load()方法执行代码运行分析:
(1)运行条件
(2)运行结果
(3)过程分析
3、load()方法默认延迟加载的修改:
4、get()与load()的另一个区别:
二、关联对象检索优化
1、多端关联配置优化
情况1:fetch=“join”
(1)运行条件
(2)运行结果
(3)过程分析
情况2:fetch=“select” lazy=“false”
(1)运行条件
(2)运行结果
(3)过程分析
情况3:fetch=“select” lazy=“true”
(1)运行条件
(2)运行结果
情况4:fetch=“select” lazy=“extra”
(1)运行条件
(2)运行结果
(3)过程分析
情况5:fetch=“subselect”
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”
第8章 Hibernate缓存机制
一、缓存范围分类
二、一级缓存
三、二级缓存
1、Hibernate缓存的执行
2、二级缓存内容分类
3、二级缓存的并发访问策略
4、第三方插件EHCache用法
Step1:导入Jar包
Step2:修改主配置文件
Step3:添加ehcache.xml
Step4:指定缓存内容
5、类缓存
6、集合缓存
(1)运行条件
(2)测试过程及原理
7、ehcache.xml配置详解
8、与二级缓存管理相关的方法
三、Query缓存
四、缓存的生命周期
1、一级缓存
2、二级缓存
3、Query缓存
第9章 事务相关内容
一、数据库事务复习
1、事务四大特性(简称ACID)
(1)原子性(Atomicity)
(2)一致性(Consistency)
(3)隔离性(Isolation)
(4)持久性(Durability)
2、事务的并发问题
(1)读并发
(2)写并发
3、读并发问题
(1)脏读
(2)不可重复读
(3)幻读
4、事务的隔离级别
5、写并发问题
(1)第一类丢失更新
(2)第二类丢失更新
6、加锁机制
(1)乐观锁
(2)悲观锁
二、Hibernate并发问题解决
1、设置Hibernate事务隔离级别
2、Hibernate实现乐观锁
3、Hibernate实现悲观锁
第10章 Hibernate注解式开发
1、Hibernate基本注解
第一类:类级注解
(1)@Entity
(2)@Table
第二类:属性级注解
主键相关注解
(1)@Id
(2)@GeneratedValue
普通属性相关注解
(1)@Column
(2)@Basic与@Transient
(3)@Version
(4)@Temporal
程序举例
2、关联关系映射注解
(1)一对多单向关联
(2)一对多双向关联
(3)自关联
(4)多对一单向关联
(5)多对多单向关联
(6)多对多双向关联
Hibernate5 框架技术 课程讲义 北京动力节点教育培训公司 制作人:郭哥 2015 年 10 月
北京动力节点 中国 Java 培训的黄埔军校 Hibernate5 讲义 第 1 章 Hibernate 概述 Hibernate 是一个开放源代码的 ORM(对象关系映射)框架,它对 JDBC 进行了非常轻 量级的对象封装,使得 Java 程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate 可以应用在任何使用 JDBC 的场合,既可以在 Java 的客户端程序使用,也可以在 Servlet/JSP 的 Web 应用中使用。 ---- 百度百科《Hibernate》 一、什么是 对象持久化 所谓持久化(Persistence),即把数据(如内存中的对象)保存到持久化设备,即可永 久保存的存储设备中(如磁盘)。 持久化的主要应用是将内存中的数据存储到关系型的数据库中,当然也可以存储在磁 盘文件中、XML 数据文件中等。 二、为什么要持久化 (1)内存不能持久; (2)内存容量有限(内存是用于存放计算数据的); (3)业务数据共享的需要(需要公共的持久设备); (4)为了使用大规模的检索(所以要将数据改为适合大规模检索的格式); (5)数据管理的需要(安全、备份) 三、怎样实现持久化 1、对象序列化 即实现了 Serializable 接口的类。适合于少量的对象进行暂时的持久化,适合于在网络 上传输对象。但不符合企业级应用的需要。因为企业应用中对数据的要求是大量的、长时 间保存的、需要进行大规模查询。 2
北京动力节点 中国 Java 培训的黄埔军校 2、JDBC 优点:功能完备、从理论上说效率是最高的;可以存储海量的数据并且适合进行大规 模检索; 缺点:开发效率和维护效率低;开发难度大,代码量大,占到到总代码量的 1/3,或 1/2; 3、ORM ORM,即 Object-Relational Mapping,对象关系映射。它是一种解决问题的思路,是一 种思想。它的实质就是将关系数据库中的业务数据用对象的形式表示出来,并通过面向对 象的方式将这些对象组织起来,以实现系统业务逻辑。或者说,ORM 就是内存中的对象与 数据库中的数据间的映射关系。 ORM 的特点:开源的,实现了 JDBC 的封装, 实现了简单的 API,轻量级解决方案,持 久化对象是一个 POJO 类。最有名的 ORM 框架就是 Hibernate。 4、JPA 框架 JPA,Java Persistence API,是 Java EE 5 的标准 ORM 接口。它是一种规范,一套接口, 但不是实现。用于实现这一规范的 ORM 很多,其中 Hibernate 就是之一。 5、JPA、ORM 与 Hibernate 间的关系 JPA、ORM 与 Hibernate 间的关系是,ORM 是一种思想。JPA 则是这种思想的具体的表 现形式,是以 Java 语法规范表现出来的一种形式,是一套标准接口。Hibernate 则是这套接 口的具体实现。 四、Hibernate 框架 Hibernate 原本是 JBOSS 旗下的产品,2006 年 JBOSS 被 Red Hat 收购,变为了红帽公司 的产品。 3
北京动力节点 中国 Java 培训的黄埔军校 1、Hibernate 框架下载 Hibernate 官网:http://hibernate.org 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
北京动力节点 中国 Java 培训的黄埔军校 第 2 章 Hibernate 基本技术 一、Hibernate 工作原理 二、第一个 Hibernate 程序 举例:primary 1、定义持久化对象(PO) 5
北京动力节点 中国 Java 培训的黄埔军校 2、配置映射文件 配置映射文件,即配置两个关系:实体类与数据库中表的映射关系,属性与表中字段 的映射关系。 Hibernate 中主要涉及两个配置文件:主配置文件与映射文件。这两个配置文件的约束 文件在 Hibernate 核心 Jar 文件 hibernate-core-5.0.1.Final.jar 中的 or.hibernate 包中: 主配置文件的约束: 映射文件的约束: 6
北京动力节点 中国 Java 培训的黄埔军校 3、配置主配置文件 主 配 置 文 件 中 的 数 据 库 连 接 相 关 属 性 值 可 在 hibernate 框 架 解 压 目 录 下 的 project/etc/hibernate.properties 文件中找到。 方言与 DB 连接四要素的 key: 数据源的 key: 注意,若不指定第三方数据源,将使用 Hibernate 内置的数据源。该数据源无法自动将 数据库连接 Connection 释放,而数据源作为 SessionFactory 的属性,一直被当前程序占用, 导致 SessionFactory在程序运行结束后无法自动关闭。所以在测试时会出现程序运行结束了, 但 Eclipse 的 Terminate 按钮仍显示为红色运行状态。 7
北京动力节点 中国 Java 培训的黄埔军校 4、创建数据库 使用 MySql 自带的 test 数据库。 8
分享到:
收藏