6.6.2. 不可更改数据的第二级对象缓存


Hibernate 自动在内存中缓存数据以提高性能。这通过内存中缓存实现,该缓存可减少数据库查找的次数,特别是很少更改的数据。

Hibernate 维护两种类型的缓存:主缓存(也称为一级缓存)是必需的。此缓存与当前会话关联,并且所有请求都必须通过它。辅助缓存也称为第二级缓存,是可选的,仅在查询了主缓存后才会使用。

通过先将数据存储到一个状态数组中,数据存储在二级缓存中。这个数组会被深度复制,并将深度副本放入缓存中。相反,可以从缓存读取。这非常适合改变(可传递数据)的数据,但对不可变数据效率较低。

从内存使用情况和处理速度来看,深度复制数据是一项代价昂贵的操作。对于大型数据集,内存和处理速度成为了性能限制因素。Hibernate 允许您指定引用而非复制的不可变数据。Hibernate 现在可以将对数据的引用存储在缓存中,而不是复制整个数据集。

这可以通过将配置设置 hibernate.cache.use_reference_entries 的值更改为 true 来完成。默认情况下,hibernate.cache.use_reference_entries 设置为 false

hibernate.cache.use_reference_entries 设置为 true 时,没有任何关联的不可变数据对象不会复制到二级缓存中,并且仅存储对其的引用。

警告

hibernate.cache.use_reference_entries 设为 true 时,具有关联的不可变数据对象仍会深入复制到二级缓存中。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat