您的位置:首页 > 其它

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值
  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: