栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Hibernate缓存参考

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Hibernate缓存参考

隔离级别缓存

简介: 该高速缓存有时并不是真正的高速缓存。但是,为了实现某些隔离级别,数据库本身可能会缓存某些查询结果。

生命周期/范围: 此缓存的作用域为单个Session / EntityManager。生命周期绑定到事务生命周期。

清除缓存: 除了开始新事务外,我无所不知

缓存内容: 查询和结果(如果隔离处于可重复读取或可序列化级别)

默认情况下为“开”: 取决于数据库的默认隔离级别。默认情况下,MySQL附带可重复的读取隔离,所以是的,默认情况下,MySQL处于启用状态。

打开/关闭: 可以在创建事务时指定。也可以通过更改数据库的默认值来更改。

有用的信息: 除了指定所需的隔离级别之外,Hibernate / JPA实际上对该缓存的操作没有任何控制权。

会话级别(1级)缓存

摘要: 此缓存是EntityManager / Session缓存。我相信这也是所谓的持久性上下文。

生命周期/范围: 此缓存的作用域为单个Session / EntityManager。生命周期绑定到事务生命周期。

清除缓存:
调用

clear()
EntityManager或Session会清除整个缓存。调用
evict()
Session会从缓存中清除单个对象。

缓存内容: 所有内容

默认为开启:

开启/关闭: 无法关闭

有用的信息:
每当

flush()
调用该高速缓存时,它就会与数据库合并。除非发生这种情况,否则其他事务将无法看到此缓存中的内容。保证a的最佳方法
flush()
是提交事务。

2级缓存

简介: 这是可以启用的辅助缓存(通常用于尝试并提高性能)。

生命周期/范围: 我相信这绑定到EntityManagerFactory /
SessionFactory。此缓存的自动驱逐取决于缓存策略。在只读策略中,永远不会自动清除数据。在读写或无限制读写策略中,会话关闭时将清除数据。
不能100%确定这一点。

清除缓存:
您可以调用

getCache().evict(class)
逐出特定的类并
getCache().evictAll()
逐出整个缓存。这些方法在EntityManagerFactory上。

缓存内容: 您明确配置应缓存的实体。

默认为开启:

开启/关闭: 在Hibernate配置中开启/关闭

有用的信息:

查询缓存

摘要: 查询缓存是一种存储查询,查询参数和结果的缓存。如果查询和查询参数相同,则可以预期结果相同。

生命周期/范围: 我不知道何时确定此缓存中的数据是陈旧的。我相信范围是在EntityManagerFactory /
SessionFactory级别。另外,Hibernate保留了每个表的“
Hibernate的最新更新”时间戳的列表。Hibernate使用这些时间戳来确定查询结果是否是陈旧的,并自动退出陈旧的查询。

清除缓存:

evictQueries()
在会话工厂方法可用于手动逐出查询缓存。

缓存内容: 查询及其结果

默认为开启:

开启/关闭: 在Hibernate配置中开启/关闭

有用的信息: 查询缓存仅缓存实体ID。它必须与第二级缓存一起使用,以实现 真正的 (无数据库访问)缓存。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/380800.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号