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进行查询时自动调用。
上一篇:FC封神榜的土地庙有什么用
下一篇:怎么让学生上课的时候集中注意力?