使用Speedment 3.0.17及更高版本简化交易
交易次數
有時我們想確保我們的數據庫操作是原子執行的,并且與其他操作分開。 這是交易起作用的地方。 交易是一組操作
數據庫可能接受或不接受作為原子操作的建議。 因此,要么接受交易中的所有操作,要么不接受交易中的所有操作。 事務的另一個優點是,在事務啟動時,數據庫的狀態將在本地“凍結”,因此在事務中我們不會看到其他線程的更新。
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 ,如下所示:
下一步是什么?
在此處閱讀有關Speedment交易的更多信息 。
訪問GitHub并在此處閱讀有關Speedment開源的所有信息。
翻譯自: https://www.javacodegeeks.com/2017/11/transactions-made-simple-using-speedment-3-0-17.html
總結
以上是生活随笔為你收集整理的使用Speedment 3.0.17及更高版本简化交易的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: WinXP系统怎么怎么恢复系统还原xp如
- 下一篇: 燕秀简化快捷键(如何把燕秀功能键调出来?