hibernate的一级缓存与二级缓存
2017-03-02 11:11
309 查看
其实一级缓存与二级缓存主要的区别就是所作用的范围不一样
1.一级缓存(这里也可以说是sessionfactory的内置缓存)
*作用范围是session作用域
2.二级缓存(sessionfactory的外置缓存)
*作用范围是SessionFactory作用域,即是对同一个sessionfactory产生的session都起到作用
*存储在内存或者是在硬盘上
*也有人说这是数据库数据的拷贝
数据检索的两个函数load与get的本质区别
1.load(ClassName,对应的主键值)
*是延迟检索
*这个函数认为相应的数据记录是一定存在的,所以默认采用代理对象
*如果所需要的对象不在数据库中那么就会出现异常
*查询的顺序:a. 首先查看session缓存,看相应的数据记录是否存在于session缓存中,如果不存在则创建代理。b. 如果用户知道某ID在数据库中一定存在,则可采用该方式进行检索。
2.get(ClassName,对应的主键值)
*立即查询
*查询顺序:
a. 首先在session缓存中查询是否存在
b. 如果一级缓存中不存在,则查看二级缓存。
c. 如果一级缓存与二级缓存都不存在则在数据库中进行查找
d.如果以上方式都不存在,返回null值
1.一级缓存(这里也可以说是sessionfactory的内置缓存)
*作用范围是session作用域
2.二级缓存(sessionfactory的外置缓存)
*作用范围是SessionFactory作用域,即是对同一个sessionfactory产生的session都起到作用
*存储在内存或者是在硬盘上
*也有人说这是数据库数据的拷贝
数据检索的两个函数load与get的本质区别
1.load(ClassName,对应的主键值)
*是延迟检索
*这个函数认为相应的数据记录是一定存在的,所以默认采用代理对象
*如果所需要的对象不在数据库中那么就会出现异常
*查询的顺序:a. 首先查看session缓存,看相应的数据记录是否存在于session缓存中,如果不存在则创建代理。b. 如果用户知道某ID在数据库中一定存在,则可采用该方式进行检索。
2.get(ClassName,对应的主键值)
*立即查询
*查询顺序:
a. 首先在session缓存中查询是否存在
b. 如果一级缓存中不存在,则查看二级缓存。
c. 如果一级缓存与二级缓存都不存在则在数据库中进行查找
d.如果以上方式都不存在,返回null值
相关文章推荐
- hibernate一级缓存和二级缓存的区别
- hibernate一级缓存和二级缓存的区别
- Hibernate一级缓存 & 二级缓存(转)
- 黑马程序员:关于hibernate一级缓存二级缓存,查询缓存
- Hibernate一级缓存和二级缓存详解
- hibernate中的一级缓存和二级缓存
- hibernate一级缓存和二级缓存的区别
- hibernate一级缓存和二级缓存详解
- hibernate一级缓存、二级缓存
- hibernate一级缓存和二级缓存的区别
- hibernate中的一级缓存和二级缓存
- Hibernate一级缓存 & 二级缓存(转)
- Hibernate一级缓存与二级缓存的区别
- hibernate的一级缓存和二级缓存
- hibernate一级缓存和二级缓存的区别
- hibernate一级缓存和二级缓存的区别
- Hibernate 一级缓存和二级缓存的注意事项
- hibernate —— 一级缓存和二级缓存
- Hibernate为什么需要二级缓存,一级缓存不够用吗?
- Hibernate一级缓存、二级缓存以及查询缓存的关系