多语言展示
当前在线:1810今日阅读:27今日分享:41

Hibernate中的一级缓存介绍

Hibernate框架中,我们知道其是通过创建Session对象对数据库进行增删改查的,Hibernate在创建Session对象的时候就会为Session对象创建一个独立的缓存区域,用于存储该Session查询出的数据。该缓存区即叫做一级缓存,同时也称为Session级缓存。
工具/原料

Hibernate框架

方法/步骤
1

一级缓存的作用是将数据库操作的数据在该缓存中暂存一份,在Session取数据时会优先在缓存区取,如果没有才会去数据库中取,这样避免了频繁的数据库访问,提高代码运行效率。

2

验证一级缓存的存在:查询同一条记录两次,如果控制台只打印出提条sql查询语句,那么证明第二次查询是直接从一级缓存中取出的。注意需要在Hibernate配置文件中配置打印sql。

3

一级缓存是每个Session独享的,即Hibernate会为每一个创建的Session开放不同的缓存区域。验证,只需要创建不同Session查同一记录,看控制台打印sql。

4

Session的save,update,delete操作会触发缓存更新。验证通过Session的get方法,查看缓存中数据更新情况。此时数据库中数据如下。

5

以update为例,更改测试程序,在更新前更新后分别输出同一主键下的记录变化。

6

运行,查看控制台输出。分析,第二次输出缓存中的数据,并没有sql查询打印,是从缓存取的数据,证明缓存同步更新。后面的update的sql为提交数据库时打印出的sql,证明是先更新了一级缓存,再通过调用提交事务,更新数据库。

7

因一级缓存存储量有限,一级缓存还加入了管理机制,通过调用evict()方法,清理某个对象,或者clear清理所有对象,又或者通过关闭session,释放缓存空间,这对于Hibernate在操作十万级以上数据时,需要使用,以免缓存溢出。

注意事项

一级缓存是默认开启的,使用Hibernate的API进行查询时自动调用。

推荐信息