`

Session缓存

阅读更多

 Hibernate向我们提供的主要的操纵数据库的接口,Session就是其中的一个,它提供了基本的增,删,改,查方法.而且具有一个缓存机制,能够按照某个时间点,按照缓存中的持久化对象属性的变化来更新数据库,着就是Session的缓存清理过程.

Session缓存的作用

     [1]减少DB访问频率。应用程序从内存中读取持久化对象的速度显然比到数据库中查询数据要快得多了,所以Session的缓存可以提高数据访问性能。

     [2]保证缓存中对象与DB数据同步。位于缓存中的对象被称为持久化对象,当患粗重之久化对象的状态发生了变换,Session并不会立即执行相关SQL语句,这使得Session能够把几条相关的SQL居于合并为一条SQL语句,以便较少DB访问次数,提高效率。

      [3]当缓存中的持久化对象之间存在循环关联关系是,Session会保证不出现访问对象图的死循环,以及由死循环引起的JVM堆栈溢出异常。

在Hibernate中对象分为三个状态,临时,持久化,游离.对象的临时状态:

       1.刚用new创建对象的时候,它还没有被持久化,这个时候是临时状态.

       2.对象的持久化状态:已经被加入到Session的缓存中,通常所说的持久化对象就是只一个对象在这个状态的时候.

       3.对象的游离状态:已经被持久化,但是不属于Session的缓存的时候是游离状态.

       Session有两个方法,一个commit()事务提交方法,还有flush()刷新缓存方法,都有着清理缓存的作用,flush()进行缓存的清理,执行一系列的SQL语句,但不会提交事务.而commit()方法会先调用flush()方法,然后在提交事务.

详解区别:

commit针对事物的 
flush针对缓存的,flush() 其实是放到缓存当中  
同步到数据库中后只要没有commit还是可以rollback的

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics