安平谁做网站好,做问卷的网站生成二维码,网页游戏开服表是什么,wordpress网站慢交易次数 有时我们想确保我们的数据库操作是原子执行的#xff0c;并且与其他操作分开。 这是交易起作用的地方。 交易是一组操作 数据库可能接受或不接受作为原子操作的建议。 因此#xff0c;要么接受交易中的所有操作#xff0c;要么不接受交易中的所有操作。 事务的另一… 交易次数 有时我们想确保我们的数据库操作是原子执行的并且与其他操作分开。 这是交易起作用的地方。 交易是一组操作 数据库可能接受或不接受作为原子操作的建议。 因此要么接受交易中的所有操作要么不接受交易中的所有操作。 事务的另一个优点是在事务开始时数据库的状态将在本地“冻结”因此在事务中我们不会看到其他线程的更新。 Speedment是一个开源的Stream ORM Java工具包和Runtime Java工具它将现有数据库及其表包装到Java 8流中。 Speedment的更高版本以易于使用的方式支持数据库事务。 更新 想象一下我们正在编写一个带有帐户的银行应用程序然后将100美元从一个帐户1转移到另一个2。 在这种情况下重要的是钱不要消失即从1中扣除但从未存入2甚至更糟的是将重复即以2存入但未从1扣除。 可以使用以下Speedment数据库事务来确保这一点 txHandler.createAndAccept(tx -Account sender accounts.stream().filter(Account.ID.equal(1)).findAny().get();Account receiver accounts.stream().filter(Account.ID.equal(2)).findAny().get();accounts.update(sender.setBalance(sender.getBalance() - 100));accounts.update(receiver.setBalance(receiver.getBalance() 100));tx.commit();
} 当方法 调用tx.commit() 这两个更新将自动提交给数据库并且对所有其他线程可见。 如果我们没有显式调用tx.commit()则事务将自动回滚即更新将不起作用将被丢弃。 准备工作 在使用事务之前我们需要获得一个TransactionHandler如下所示 BankApplication app ....TransactionComponent transactionComponent app.getOrThrow(TransactionComponent.class);TransactionHandler txHandler transactionComponent.createTransactionHandler(); 的 可以从应用程序中检索AccountManager 如下所示 AccountManager accounts app.getOrThrow(AccountManager.class);下一步是什么 在此处阅读有关Speedment交易的更多信息 。 访问GitHub并在此处阅读有关Speedment开源的所有信息。 翻译自: https://www.javacodegeeks.com/2017/11/transactions-made-simple-using-speedment-3-0-17.html