Hibernate5(2016)——缓存与事务

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中每部分是对象形式

猜你喜欢

转载自blog.csdn.net/qq_38386085/article/details/85045361