日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用Speedment 3.0.17及更高版本简化交易

發布時間:2023/12/3 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用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 ,如下所示:

AccountManager accounts = app.getOrThrow(AccountManager.class);

下一步是什么?

在此處閱讀有關Speedment交易的更多信息 。

訪問GitHub并在此處閱讀有關Speedment開源的所有信息。

翻譯自: https://www.javacodegeeks.com/2017/11/transactions-made-simple-using-speedment-3-0-17.html

總結

以上是生活随笔為你收集整理的使用Speedment 3.0.17及更高版本简化交易的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。