hibernate缓存的作用

来源:互联网 发布:我的淘宝界面音乐 编辑:程序博客网 时间:2024/05/22 06:26

Session缓存(一级缓存)

一级缓存是Session的缓存。由于Session对象的生命周期通常对应一个数据库事务或者一个应用事务,因此它的缓存是是事务范围的缓存。第一级缓存是必须的,不允许而且事实上也无法被卸除。在第一级缓存中,持久化类的每个实例都具有唯一的OID。

作用

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

2.保证缓存中的对象与数据库中的相关记录保持同步,当缓存中持久化对象的状态发生了变化,Session并不会立即执行相关的SQL语句,这使得Session能够把几条相关的SQL语句合并为一条SQL语句,以便减少访问数据库的次数,从而提高应用程序的性能。

清理缓存

清理缓存是指按照缓存中对象的状态的变化来同步更新数据库

Session会在下面的时间点清理缓存:

-当应用程序调用org.hibernate.Transaction的commit()方法的时候,commit()方法先清理缓存,然后再向数据库提交事务。

-当应用程序显示调用Session的flush()方法的时候。(提交事务,关闭session之前调用该方法)

 

SessionFactory缓存(二级缓存)

第二级缓存是一二可插拔的缓存插件,他由SessionFactory负责管理,由于SessionFactory对象的生命周期和应用程序的整个进程对应,因此第二季缓存是进程范围的缓存。这个缓存中放的是对象的散装数据。第二季缓存是可选的,可以在每个类或每个集合的力度上配置第二级缓存。

未完待续

 

原创粉丝点击