无需额外往返即可获取对象存储属性

Posted

技术标签:

【中文标题】无需额外往返即可获取对象存储属性【英文标题】:Getting object store properties without additional round-trip 【发布时间】:2013-08-14 05:06:32 【问题描述】:

我正在使用 IBM FileNet CE API 5.1 并面临性能问题,因为循环中的额外刷新具有大量迭代量 (25000+)。这是代码示例:

for (Document document : documents) 
       ObjectStore objectStore = document.getObjectStore();
       objectStore.refresh(); //round-trip
       String symbolicName = objectStore.get_SymbolicName();

       ...
 

问题是,刷新之前的 objectStore 对象根本没有任何缓存属性,甚至对象标识(如果我有我可以创建对象存储缓存以避免在每次迭代中刷新)。

文档可能有不同的对象存储(我正在搜索多个对象存储)。

【问题讨论】:

究竟如何将 Document 对象检索到列表中? 我正在使用 SearchScope.fetchObjects(StoredSearch, ...) 方法。 【参考方案1】:

您可以从对象引用中获取对象存储的id:

document.getObjectReference().getObjectStoreIdentity()

【讨论】:

【参考方案2】:

有一种方法可以通过EngineObjectImpl.getObjectStoreReference()获取object store id:

GlobalIdentity objectStoreReference = ((EngineObjectImpl)object).getObjectStoreReference();
Id objectId = objectStoreReference.getObjectId();

【讨论】:

EngineObjectImpl 不是公共 API 的一部分。应该避免使用它是不安全的。 确实如此。但是你有什么建议吗? API 只为您提供具有空缓存的 ObjectStore 对象(没有属性,甚至没有 guid)。 @sermolaev 这取决于您如何获取对象。请参阅我对问题的评论。

以上是关于无需额外往返即可获取对象存储属性的主要内容,如果未能解决你的问题,请参考以下文章

会话中的弹簧存储对象

获取属性错误:类型对象“Level_2_Headings”没有属性“祖先”(GAE 数据存储)

Java_面向对象

Java_面向对象

Java_面向对象

iOS开发之数据存储