Hibernate篇:一级缓存

it2024-08-05  39

一级缓存

为了减少对数据库的访问次数,提高查询效率,hibernate提供了一级缓存和二级缓存,这里先介绍一级缓存,一级缓存是session级别的。

什么是一级缓存?

执行上述语句,我们会发现hibernate只向数据库发送了一次select语句,这是因为存在一级缓存的缘故,所以第二次进行查询时,session会先在缓存中查询看是否存在该对象,如果存在则不会去数据库中进行查询。

session缓存有关操作

flush操作

flush操作是指按照缓存中对象的属性变化来同步更新数据库。 什么时候会执行flush操作?

1.显示调用session的flush方法 2.在执行transaction的commit方法时,会先进行flush操作,然后向数据库提交事务 3.在执行HQL或者QBC查询时,如果缓存中持久化对象的属性已经发生了变化会先flush缓存。

注意:如果对象使用native方式生成OID,那么调用Session 的save方法时会立刻执行insert语句获取持久化对象的OID。

reflush操作

reflush会强制发送select语句,使session缓存中的记录和数据库记录保持一致 调用session.reflush方法即可

clear操作

清理缓存。调用clear方法和关闭session时会进行清理缓存。

最新回复(0)