Session的缓存

来源:互联网 发布:店淘宝客怎么一键复制 编辑:程序博客网 时间:2024/05/20 05:10

 在Session接口的实现类SessionImpl中定义了一系列的java集合,这些集合构成了Session的缓存.

一.Session缓存作用:
1.减少访问数据库的频率.
        应用程序从内存中读取持久化对象的速度比从数据库中查询快得多.
2.保证缓存中的对象与数据库中的记录保持同步.
        当缓存中持久化对象的状态发生变化,Session并不会立即执行相关的SQL语句,这使得Session能把几条相关的SQL语句合并为一条SQL语句,以减少访问数据库的频率.

二.Session清理缓存
Session 在清理缓存时,会把缓存中所有的持久化对象和数据库记录比较,如果持久化对象改变则执行SQL update来更新数据库记录.
Session 清理缓存时间点:
Session 的setFlushMode()方法用于设定清理缓存的时间点:session.setFlushMode(FlushMode.AUTO);
FlushMode.AUTO 为默认方式
一共三种模式
模式               Session的查询方法                Session的commit()方法         Session的flush()方法
FlushMode.AUTO      清理                             清理                         清理  
FlushMode.COMMIT    不清理                           清理                         清理
FlushMode.NEVER     不清理                           不清理                       清理 
备注:Session清理缓存例外,如果对象使用native生成器生成OID,那么当Session的save()保存该对象时,会立即向数据库插入该实体的insert语句