【问题标题】:Objectify : is there a way to know whether the entity is loaded from objectify session or directly from datastore?对象化:有没有办法知道实体是从对象化会话加载还是直接从数据存储加载?
【发布时间】:2019-12-10 07:13:11
【问题描述】:

我有两个问题:

1) 假设我已经使用一组过滤器从数据存储中加载了 50 个实体,并且它会出现在 objectify 会话中,一段时间后,如果我尝试使用不同的过滤器集加载相同的实体,它会获取从对象化会话或数据存储?

2) 我已经加载了 50 个实体,并且可以在 objectify 会话中使用,现在我正在尝试使用一组过滤器加载一些实体,例如这个过滤器将获取 55 个实体,这 50 个实体将与我已经加载了,其他5个是新的。它会从数据存储中获取所有 55 个实体,还是会从会话中获取 50 个实体,其余 5 个从数据存储中获取?

【问题讨论】:

    标签: objectify


    【解决方案1】:

    Objectify 总是喜欢从会话中给你对象。 1 的答案是您将从会话中获取对象。 2 的答案是您将从会话中获得(尽可能多的)对象。

    请记住,查询(即不是按键获取的操作)始终会到达数据存储区以执行。根据各种因素,Objectify 可能会发出仅键查询,然后对任何“丢失”实体执行批量获取键,或者 Objectify 可能会发出完整查询并丢弃已存在的任何额外数据会议。

    【讨论】:

    • 哦,我的查询不是按键获取操作,我所有的查询都是基于实体的字段,所以即使会话中存在相同的实体,它仍然会命中数据存储不是吗?谢谢你解除我的疑惑!! @stickfigure
    • 查询解析器和确定实体是否匹配查询的所有逻辑由数据存储服务器端处理。因此查询必须命中服务器以识别结果集。有时,Objectify 可以通过将查询设置为仅键来“混合”查询,但索引仅存在于数据存储本身上。
    猜你喜欢
    • 1970-01-01
    • 2012-09-14
    • 1970-01-01
    • 2012-04-18
    • 1970-01-01
    • 2015-09-11
    • 1970-01-01
    • 2012-01-13
    • 1970-01-01
    相关资源
    最近更新 更多