我可以看到it is possible使用单个环境事务来在多个商店上工作。 (我也假设可以写)。
实体商店的高级api对我来说非常方便,但是我找不到共享实体商店交易的方法。查看代码,我可以看到实体商店实际上是在创建环境事务,但是由于这些是单个事务,因此我无法跨多个商店执行操作,也无法提交/中止单个事务。
我错过了什么吗?还是应该对实体商店api说再见,然后回到商店API?
答案 0 :(得分:1)
我是最初问您要参考的那个问题的人。
在Xodus中,有三种不同的使用方式: -环境; -实体商店; -VFS。
我正在使用Environments API,并且所有事务都是针对整个Environment创建的。而且,据我所知,您正在使用实体商店API,因此您只能使用仅针对特定商店启动的StroreTransaction并操纵其实体。
因此,如果您需要针对多个商店共享一项交易,则需要切换到环境API。
答案 1 :(得分:1)
如果使用Environments API,则无论访问环境中创建了多少个命名存储区,都可以访问该环境中的任何数据。在环境API中,Store只是一个命名的键值映射。
PersistentEntityStore被创建在Environment的顶部。单个物理(磁盘)位置对应于Environment和PersistentEntityStore。事务是针对Environment或PersistentEntityStore创建的。无论使用哪种API,都不能在Environment实例之间以及PersistentEntityStore实例之间共享事务。