hibernate的一级缓存与二级缓存

其实一级缓存与二级缓存主要的区别就是所作用的范围不一样

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值

  

你可能感兴趣的:(框架)