私塾学习笔记整理
一、一级缓存
一级缓存的生命周期和 的生命周期一致,当前 一旦关闭,一级缓存就消失,因此
一级缓存也叫 级的缓存或事务级缓存,一级缓存只存实体对象的,它不会缓存一般的对象
属性(查询缓存可以),即当获得对象后,就将该对象的缓存起来,如果在同一 中如果再
去获取这个对象时,它会先判断缓存中有没有该对象的 I,如果有就直接从缓存中取出,反之则去
数据库中取,取的同时将该对象的缓存起来,有以下方法可以支持一级缓存:
1
1!
1(查询实体对象)
其中,#:和 . 的 只会缓存,但不会使用缓存(除非结合查询缓存)。
二、二级缓存
二级缓存也称进程级的缓存或 + 9: 级的缓存,二级缓存可以被所有的 session 共享,二
级缓存的生命周期和 + 9: 的生命周期一致。4 为实现二级缓存,只提供二级缓
存的接口供第三方来实现。二级缓存也是缓存实体对象,其实现原理与一级缓存的差不多吧,
其方法与一级的相同,只是缓存的生命周期不一样而已:
1
1!
1(查询实体对象)
其中,#:和 . 的 只会缓存,但不会使用缓存(除非结合查询缓存)。
什么样的数据适合存放到第二级缓存中?
、很少被修改的数据
、不是很重要的数据,允许出现偶尔并发的数据
$、不会被并发访问的数据
%、参考数据
不适合存放到第二级缓存的数据?
、经常被修改的数据
、财务数据,绝对不允许出现并发
$、与其他应用共享的数据。
1各种控制的流程
0!
→po
事务判断要不要提交。我们写了 t.commit(),他才会瓶 sql 往下走。
通过 po 得到一个全路径拼出 model.hbm.xml,到.cfg.xml 中找到 hbm.xml。
动态拼 sql。
得到连接。
执行 .。
#!0!注意:!:0E#! 只生成改过的字段
→po(!:0E#!4#3! 一遍)
t.commit
po 找到 model.hbm.xml
拼 sql
得到连接
)