欢迎使用CSDN-markdown编辑器
2017-11-17 18:21
148 查看
在学框架的时候,觉的知识点比较碎也比较杂,不方便记忆。所以,原来自己记录了一下常用到的知识点。
Hibernate
一、Hibernate简介及配置
1)hibernate简介
Hibernate框架是一个开源的ORM(Object Relational Mapping,对象关系映射)框架。
1.轻量级
2.实现将java pojo类与DB中 表的进行映射
3.全自动的orm框架,不用写sql语句
2)hibernate环境搭建
1.jar包
2.Hibernate核心配置文件(hibernate.cfg.xml)
– xml格式,位置和格式都是固定的
– 位置:必须在src下
– 名称:必须是hibernate.cfg.xml
(1)第一部分、数据库配置 必须
(2)第二部分、可选
(3)加载映射文件
3)hibernate核心api
–Configuration
Configuration cfg = new Configuration();
Cfg.configure();
到src下面找到名称hibernate.cfg.xml配置文件,创建对象,把配置文件放到对象里面(加载核心配置文件)
–SessionFactory(重点)
1.使用configuration对象创建sessionFactory对象
2.创建sessionFactory过程中,这个过程特别耗资源,所以在hibernate操作中,建议一个项目一般创建一个sessionFactory对象
3.具体实现
写工具类,写静态代码块实现,类加载的时候加载
– Session(重点)
1.session类似jdbc中connection
2.调用session里面不同的方法实现crud操作
(1)添加 save方法
(2)修改 update方法
(3)删除 delete方法
(4)Id查询 get/load方法
3.sessio对象单线程对象
Session对象不能共用,只能自
4000
己使用
4.hibernate绑定session
获得当前线程的session
配置文件中配置
工具类中:
获取与本地线程绑定session时候,关闭session报错,不需要手动关闭了
–Transaction
1.事务对象
Transaction tx = session.beginTransaction();
2.事务提交和回滚
Tx.commit();
Tx.rollback();
3.事务概念
四个特性:原子性、一致性、隔离性、持久性
4.hibernate事务代码规范写法
代码结构
Try{
开启事务
…
提交事务
}catch(){
事务回滚
}finally{
关闭
}
二、映射文件(实体类.hbm.xml)
1)demo
– 映射配置文件名称和位置没有固定的要求
– 建议:在实体类所在包里面创建,实体类名称.hbm.xml
1.创建xml格式配置文件
2.导入头部dtd约束
3.实体类映射表
2)一对一
3)一对多
hibernate一对多操作
a.一对多映射配置
1)创建实体类
2)实体类关联 一:set 多:对象
3)hbm.xml关联 一: one-to-many 多:many-to-one
b.一对多级联保存
c.一对多级联删除 cascade=”sava-update,delete”
d.inverse属性 取消维护外键
demo
“一”的那方
“多”的那方
4)多对多
hibernate多对多操作
a.多对多映射配置
1)创建实体类
2)实体类关联 set
3)hbm.xml关联 many-to-many
b.多对多级联保存
c.多对多级联删除
d.维护第三张表
5)hibernate主键生成策略
1.hibernate要求实体类里面有一个属性作为唯一值,对应表主键,主键可以不同生成策略
2.
在class属性里面有很多值
Native:根据使用的数据库选择生成策略
Uuid:hibernate帮我们生成uuid值
三、hibernate操作
1)核心操作
1.加载hibernate核心配置文件
2.创建SessionFactory对象
3.使用SessionFactory创建session对象
4.开始事务
5.写具体的crud操作
6.提交事务
7.关闭资源
2)实体类编写规范
1.实体类里面属性私有的
2.私有属性使用公开的set和get方法操作
3.要求实体类有属性作为唯一值(一般使用id值)
4.实体类属性建议不使用基本数据类型,使用基本数据类型对应的包装类
3)curd操作
1.添加
Session.save();
2.更新
3.删除
Session.delete(user);
4)三种查询方式
1.对象导航查询(根据id得到)
Session.get(User.class,uid); //立即从数据库查询
Session.load(User.class,uid) //需要的时候才从数据库查询
2.OID查询
session.get(.class,id)
3.HQL查询(重点)
4.QBC查询
QBC查询 (不需要语句) Criteria对象
Criteria criteria = session.createCriteria();
a.查询所有
criteria.list()
b.条件查询
使用restriction类的静态方法
c.排序查询
使用Order类的静态方法
d.分页查询
firstResult
maxResult
e.统计查询
f.离线查询
Hibernate检索策略
1.立即查询:根据id查询,调用get方法,一调用立马发送语句查询数据库
2.延迟查询:根据id查询,还有load方法,只有得到对象立马的值的时候才会发送语句查询数据库
a.类级别延迟
b.关联级别延迟
修改关联级别延迟
1)在映射文件中进行配置实现
2)set便签配置 fetch、lazy属性
批量抓取
set标签中配置 batch-seiz=””
整数值,值越大,效率越高
四、高级知识
1)一级、二级缓存
什么是缓存
数据存到数据库里面,数据库本身是文件系统,使用流方式操作文件效率不是很高。
1.把数据存到内存里面,不需要使用流方式,可以直接读取内存中数据
2.把数据放到内存中,提高读取效率
Hibernate缓存
1.hibernate框架中提供很多优化方式,hibernate的缓存就是一个优化方式
2.Hibernate缓存特点:
Hibernate一级缓存
(1)hibernate的一级缓存默认是打开
(2)Hibernate的一级缓存使用范围,是session范围
(3)hibernate的一级缓存中,存储数据必须是持久态数据
Hibernate二级缓存
(1)目前已经不使用了,替代技术redis
(2)二级缓存默认不是打开的,需要配置
(3)二级缓存使用范围,是sessionFactory范围
2)实体类对象的三种状态
1.瞬时态:对象里面没有id值,对象与session没有关联
2.持久态:对象里面有id值,对象与session关联
3.托管态:对象里面有id值,对象与session没有关系
Hibernate
一、Hibernate简介及配置
1)hibernate简介
Hibernate框架是一个开源的ORM(Object Relational Mapping,对象关系映射)框架。
1.轻量级
2.实现将java pojo类与DB中 表的进行映射
3.全自动的orm框架,不用写sql语句
2)hibernate环境搭建
1.jar包
2.Hibernate核心配置文件(hibernate.cfg.xml)
– xml格式,位置和格式都是固定的
– 位置:必须在src下
– 名称:必须是hibernate.cfg.xml
(1)第一部分、数据库配置 必须
(2)第二部分、可选
(3)加载映射文件
3)hibernate核心api
–Configuration
Configuration cfg = new Configuration();
Cfg.configure();
到src下面找到名称hibernate.cfg.xml配置文件,创建对象,把配置文件放到对象里面(加载核心配置文件)
–SessionFactory(重点)
1.使用configuration对象创建sessionFactory对象
2.创建sessionFactory过程中,这个过程特别耗资源,所以在hibernate操作中,建议一个项目一般创建一个sessionFactory对象
3.具体实现
写工具类,写静态代码块实现,类加载的时候加载
– Session(重点)
1.session类似jdbc中connection
2.调用session里面不同的方法实现crud操作
(1)添加 save方法
(2)修改 update方法
(3)删除 delete方法
(4)Id查询 get/load方法
3.sessio对象单线程对象
Session对象不能共用,只能自
4000
己使用
4.hibernate绑定session
获得当前线程的session
配置文件中配置
工具类中:
获取与本地线程绑定session时候,关闭session报错,不需要手动关闭了
–Transaction
1.事务对象
Transaction tx = session.beginTransaction();
2.事务提交和回滚
Tx.commit();
Tx.rollback();
3.事务概念
四个特性:原子性、一致性、隔离性、持久性
4.hibernate事务代码规范写法
代码结构
Try{
开启事务
…
提交事务
}catch(){
事务回滚
}finally{
关闭
}
二、映射文件(实体类.hbm.xml)
1)demo
– 映射配置文件名称和位置没有固定的要求
– 建议:在实体类所在包里面创建,实体类名称.hbm.xml
1.创建xml格式配置文件
2.导入头部dtd约束
3.实体类映射表
2)一对一
3)一对多
hibernate一对多操作
a.一对多映射配置
1)创建实体类
2)实体类关联 一:set 多:对象
3)hbm.xml关联 一: one-to-many 多:many-to-one
b.一对多级联保存
c.一对多级联删除 cascade=”sava-update,delete”
d.inverse属性 取消维护外键
demo
“一”的那方
“多”的那方
4)多对多
hibernate多对多操作
a.多对多映射配置
1)创建实体类
2)实体类关联 set
3)hbm.xml关联 many-to-many
b.多对多级联保存
c.多对多级联删除
d.维护第三张表
5)hibernate主键生成策略
1.hibernate要求实体类里面有一个属性作为唯一值,对应表主键,主键可以不同生成策略
2.
在class属性里面有很多值
Native:根据使用的数据库选择生成策略
Uuid:hibernate帮我们生成uuid值
三、hibernate操作
1)核心操作
1.加载hibernate核心配置文件
2.创建SessionFactory对象
3.使用SessionFactory创建session对象
4.开始事务
5.写具体的crud操作
6.提交事务
7.关闭资源
2)实体类编写规范
1.实体类里面属性私有的
2.私有属性使用公开的set和get方法操作
3.要求实体类有属性作为唯一值(一般使用id值)
4.实体类属性建议不使用基本数据类型,使用基本数据类型对应的包装类
3)curd操作
1.添加
Session.save();
2.更新
3.删除
Session.delete(user);
4)三种查询方式
1.对象导航查询(根据id得到)
Session.get(User.class,uid); //立即从数据库查询
Session.load(User.class,uid) //需要的时候才从数据库查询
//session.get(.class,id).getSet()
2.OID查询
session.get(.class,id)
3.HQL查询(重点)
4.QBC查询
QBC查询 (不需要语句) Criteria对象
Criteria criteria = session.createCriteria();
a.查询所有
criteria.list()
b.条件查询
使用restriction类的静态方法
c.排序查询
使用Order类的静态方法
d.分页查询
firstResult
maxResult
e.统计查询
f.离线查询
HQL查询 特点:与sql语句主要的不同是 sql语句查询的是数据库中表和字段 hql语句查询的是实体类名及属性 a.查询所有 from 实体类名 b.条件查询 from 实体类名 (as) 别名 where 属性名 = ? c.排序查询 asc 正序,desc 逆序 d.分页查询 firstResult maxResult e.投影查询 select 属性名,... from 实体类名 默认返回数组 f.聚合函数查询 count,avg,sum,max,min h.多表查询 (迫切:fetch) 1)内连接 inner join 没有on *内连接 返回数组 **迫切内连接 返回对象 2)左外链接 left outer join 没有on *左外链接 返回数组 **迫切左外链接 返回对象 3)右外链接 right outer join 没有on
Hibernate检索策略
1.立即查询:根据id查询,调用get方法,一调用立马发送语句查询数据库
2.延迟查询:根据id查询,还有load方法,只有得到对象立马的值的时候才会发送语句查询数据库
a.类级别延迟
b.关联级别延迟
修改关联级别延迟
1)在映射文件中进行配置实现
2)set便签配置 fetch、lazy属性
批量抓取
set标签中配置 batch-seiz=””
整数值,值越大,效率越高
四、高级知识
1)一级、二级缓存
什么是缓存
数据存到数据库里面,数据库本身是文件系统,使用流方式操作文件效率不是很高。
1.把数据存到内存里面,不需要使用流方式,可以直接读取内存中数据
2.把数据放到内存中,提高读取效率
Hibernate缓存
1.hibernate框架中提供很多优化方式,hibernate的缓存就是一个优化方式
2.Hibernate缓存特点:
Hibernate一级缓存
(1)hibernate的一级缓存默认是打开
(2)Hibernate的一级缓存使用范围,是session范围
(3)hibernate的一级缓存中,存储数据必须是持久态数据
Hibernate二级缓存
(1)目前已经不使用了,替代技术redis
(2)二级缓存默认不是打开的,需要配置
(3)二级缓存使用范围,是sessionFactory范围
2)实体类对象的三种状态
1.瞬时态:对象里面没有id值,对象与session没有关联
2.持久态:对象里面有id值,对象与session关联
3.托管态:对象里面有id值,对象与session没有关系
相关文章推荐
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器