Hibernate缓存机制
1.缓存- -为了提高性能
缓存介于应用程序(例如java程序)和永久性存储(例如数据库)源之间
其作用是降低应用程序直接读写永久性存储源的频率
从而提高应用的运行效率。
缓存内的数据是永久性存储源中的数据的复制(缓存里面的东西时内存中的一个复制版本)
应用程序在运行时从缓存读写数据(运用程序操作的是缓存中的)
在特定的时刻或事件同步缓存和永久性存储源的数据。
2.Session缓存(只是内存的一部分)-- 针对Session对象
Session 接口的实现类 SessionImpl 中定义了一系列的 Java 集合
这些集合构成了 Session 的缓存。
2-1Session缓存的工作过程
当 Session 执行查询方法时
先从 Session 缓存中读取据,如果缓存中有则直接读取
如果缓存中没有,从数据库中查询并加载到 Session 缓存中,再从缓存中读取。
当 Session 执行 save()、update() 方法时
将对象持久化到数据库中并将对象加载到 Session 缓存中。
Session清理缓存–保持缓存中的数据与数据库中的数据同步
- Session在某一时间点按照缓存中对象的属性变化来同步更新数据库的这一过程被称为 Session 清理缓存。
- 缓存清理的时间点:
当调用 transaction.commit() 方法时,会先清理缓存,再向数据库提交事务;
当显式调用 Session.flush() 方法时,会清理缓存;//刷新
当调用 Session 的查询(不包括 load() 和 get() )方法时
如果缓存中对象的属性有变化则清理缓存。
Session缓存的作用
Session缓存有两大作用:
1.减少数据库访问次数,提高数据访问的效率;
2.保证缓存中的对象与数据库中相关的记录同步;