Xodus是否需要txn.commit()?

时间:2018-08-14 15:29:53

标签: java xodus

这是我的代码:

@Override public void updateUser(String instance, String storeName, final String userId, final String newUsername, final String newPassword) { if (storeName == null || storeName == null) { return; } final PersistentEntityStore entityStore = PersistentEntityStores.newInstance(xodusRoot + instance); entityStore.executeInTransaction(new StoreTransactionalExecutable() { @Override public void execute(@NotNull final StoreTransaction txn) { EntityId roleEntityId = txn.toEntityId(userId); final Entity entity = txn.getEntity(roleEntityId); if(newUsername != null) { entity.setProperty("username", newUsername); } if(newPassword != null) { entity.setProperty("password", newPassword); } //txn.commit(); } }); entityStore.close(); } 我想知道是否需要此代码txn.commit();,以便要执行的事务,回滚如何?

ps。

如果所有事务都成功完成,我希望这段代码返回布尔值,但是除了txn.commit以外,找不到返回布尔值的方式,是这样吗?所以必须要吗?

1 个答案:

答案 0 :(得分:1)

如果使用executeInTranction()computeInTransaction()之类的方法,则不应调用txn.commit()。只需使用executeInTranction()方法来确保事务已提交-如果您的程序在executeInTranction之后到达下一条语句,则该事务已提交。