1.Hibernate的一级缓存:
1.1 什么是缓存:
1 数据存到数据库里面,数据库本身就是文件系统,java中要使用流的方式操作文件效率并不是很高
把数据存到内存里面,不需要使用流的方式,可以直接读取内存中的数据
把数据放到内存中,提高读取效率
1.2 Hibernate缓存:
1 hibernate框架中提供很多优化方式,hibernate中的缓存就是一个优化方式
2 hibernate中缓存的特点:
第一类:hibernate中的一级缓存
hibernate的一级缓存默认打开的
hibernate的一级缓存有使用范围,是session的范围,从session创建到session关闭的范围
hibernate的一级缓存中,存储的数据必须是持久态数据
第二类:hibernate中的二级缓存
目前已经没有人去使用了,被技术redis替代了
二级缓存默认不是打开的,需要配置
二级缓存的使用范围,是sessionFactory范围
1.3 验证一级缓存的存在:
1 验证方式
首先根据uid=1查询,返回对象
其次再根据uid=1查询,返回对象
第一步执行get方法之后,发送sql语句查询数据库
第二步执行get方法之后,没有发送sql语句,查询一级缓存内容
1.4 Hibernate一级缓存执行过程:
1.5 Hibernate一级缓存特性:
1 持久态自动更新数据库
2 执行过程(了解)
2.Hibernate事务操作:
2.1 事务相关概念:
1 什么是事务
2 事务的特性
3 不考虑隔离性产生问题
脏独
不可重复读
虚读
4 设置事务隔离级别
mysql默认隔离级别 repeatable read
2.2 Hibernate事务代码规范写法:
1 代码结构
Try{
开启事务
提交事务
}catch(){
回滚事务
}finally{
关闭
}
2.3 Hibernate绑定session:
1 session类似于jdbc中的connection,之前web阶段学过ThreadLocal
2 帮实现与本地线程绑定session
3 获取与本地线程session
在hibernate核心配置文件中配置
调用sessionFactory里面的方法得到
4 获取与本地线程绑定session时候,关闭session报错,不需要手动关闭了
3.Hibernate的api使用:
3.1 Query对象:
1 使用query对象,不需要写SQL语句,但是写hql语句
hql:hibernate query language,hibernate提供查询的语言,这个hql语句与普通sql语句很相似
hql与sql语句区别:-使用sql语句操作表和表字段-使用hql操作实体类和属性
2 查询所有hql语句:
from实体类名称
3 Query对象使用
创建Query对象
调用query对象里面的方法得到结果
3.2 Criteria对象:
1 使用这个对象查询操作,但是使用这个对象时候,不需要写语句,直接调用方法实现
2 实现过程
创建criteria对象
调用对象里面的方法得到结果
3.3 SQLQuery对象:
1 使用hibernate时候,调用底层sql实现
2 实现过程
创建对象
调用对象的方法得到结果
返回list集合每部分是数组形式
返回list中每部分是对象形式