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

Infinispan JPA 2级缓存默认值

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

Infinispan JPA 2级缓存默认值

实体的默认缓存配置名为

entity

对于缓存中存储的每种数据,缓存配置可能有所不同。为了覆盖缓存配置模板,请使用属性

hibernate.cache.infinispan.data-type.cfg
where,
data-type
可以是以下之一:

entity
@Id
@EmbeddedId
属性建立索引的实体。

immutable-entity
带有
@Immutable
注释标签或设置为
mutable=false
映射文件中的实体。

naturalid
按其
@NaturalId
属性索引的实体。

collection
所有收藏。

timestamps
映射实体类型→上次修改时间戳。用于查询缓存。

query
映射查询→查询结果。

pending-puts
使用失效模式缓存的区域的辅助缓存。

默认的

collection
immutable-entity
并且
naturalid
也是指定的配置
entity
,这样你就不必单独配置它们(如果你不想当然单独配置),因为可以在中看到文档和源代码。

注意

通常,使Hibernate L2缓存分布式可能不是一个好主意,因为实体实例以反汇编的水合状态存储在L2缓存中,这意味着仅关联实体的ID与父实体状态一起存储。

假设你有以下实体(

A
B
C
都是超高速缓存):

@Entitypublic class A {  @ManyToOne  private B b;  @oneToMany  private Collection<C> cs;}

即使该

cs
集合也是可
A
缓存的,也要从缓存中完全组装一个实体实例,您将需要以下网络往返于群集的其他节点:

  1. 获取实体
    A
    状态。
  2. B
    根据
    b
    关联中存储的ID 获取实体状态。
  3. 获取
    cs
    ID 的集合。
  4. 对于
    cs
    集合中的每个ID
    C
    ,一一读取实体状态。

显然,如果您要组装

A
实例的集合(例如,根据查询结果),则对的每个实例都执行上述所有操作
A

所有这些都意味着,直接从数据库中读取数据(例如,通过适当配置的延迟加载,例如使用批处理大小),可以比分布式缓存中的所有网络往返高效得多。

同样,这也是实体/集合缓存应在失效集群模式下运行的原因之一(数据仅在读取/写入数据的节点上缓存,而在更改时在其他节点上无效)。



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

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

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