这是我们的代码:
@Override
public boolean delete(String instance, final String storeName, String... keys) {
final Boolean[] isSuccess = {false};
final List<String> keyList = Arrays.asList(keys);
final Environment env = Environments.newInstance(xodusRoot + instance);
env.executeInTransaction(new TransactionalExecutable() {
@Override
public void execute(@NotNull final Transaction txn) {
final Store store = env.openStore(storeName, StoreConfig.WITHOUT_DUPLICATES, txn);
for (String key : keyList) {
isSuccess[0] = store.delete(txn, StringBinding.stringToEntry(key));
}
}
});
env.close();
return isSuccess[0];
}
对此我有两个问题。
答案 0 :(得分:2)
Xodus是符合ACID的交易数据库。除其他外,这意味着事务中的数据突变是一致的。在您的情况下,要么删除所有指定的键(提交事务),要么不删除任何键(事务中止)。如果事务由于某种原因(异常,系统/硬件故障)而中断,则不会进行任何修改,并且事务会自动回滚。