是否可以在同一个Environment实例中使用PersistentEntityStore和一个或多个普通的Store实例?我希望使用涵盖这种组合变化的交易。 我发现我必须避免与商店名称的潜在冲突。还有什么吗?
答案 0 :(得分:0)
可以在单个事务中使用不同的API层混合代码。唯一的要求是应该隔离不同API触及的数据,应该使用Stores
的不相交的名称集。
Stores
使用的PersistentEntityStore
名称是什么?任何PersistentEntityStore
都有自己唯一的名称,所有Stores
的名称代表实体存储到键/值层的映射,以"${PersistentEntityStore name}."
开头,因为它在{{{ 3}}
另一个问题是这种方法的API不完整。在针对StoreTransaction
创建PersistentEntityStore
后,应将其转换为PersistentStoreTransaction
,以便调用PersistentStoreTransaction#getEnvironmentTransaction()
获取基础交易:
final StoreTransaction txn = entityStore.beginTransaction();
// here is underlying Transaction instance:
final Transaction envTxn = ((PersistentStoreTransaction) txn).getEnvironmentTransaction();