事務就是對一系列的資料庫操作進行統一的提交或回滾操作,比如說乙個轉賬功能,要更改到帳戶兩邊的資料,這時候就必須要用事務才能算是嚴謹的做法。要麼成功,要麼失敗,保持資料一致性。如果中間有乙個操作出現異常,那麼回滾之前的所有操作。
第一:事務處理位於業務層,spring 提供了分層設計業務層的事務處理解決方案。
第二:spring 框架為我們提供了一組事務控制的介面。這組介面是在spring-tx-5.0.2.release.jar 中。
原子性是指事務包含的所有操作要麼全部成功,要麼全部失敗回滾
一致性是指事務必須使資料庫從乙個一致性狀態變換到另乙個一致性狀態,例如轉賬
使用者操作之間要有分開,資料庫為每個使用者開啟事務,要保證不被其他人受干擾。
事務一旦被提交,對於資料庫的改變是持久的,也就是當我在提交的時候給使用者返回了儲存成功,即使這個瞬間資料庫掛掉,那我們也要想辦法來讓他進行執行完成,避免損失。
required和supports常用,查詢一般使用supports,其他操作使用required
required:如果當前沒有事務,就新建乙個事務,如果已經存在乙個事務中,加入到這個事務中。一般的選擇(預設值)
supports:支援當前事務,如果當前沒有事務,就以非事務方式執行(沒有事務)
mandatory:使用當前的事務,如果當前沒有事務,就丟擲異常
requers_new:新建事務,如果當前在事務中,把當前事務掛起。
not_supported:以非事務方式執行操作,如果當前存在事務,就把當前事務掛起
never:以非事務方式執行,如果當前存在事務,丟擲異常
nested:如果當前存在事務,則在巢狀事務內執行。如果當前沒有事務,則執行 required 類似的操作。
@transactional(propagation= propagation.required)
預設值是default,表示使用資料庫的預設隔離級別。
read uncommitted(讀未提交資料):允許事務讀取未被其他事務提交的變更資料,會出現髒讀、不可重複讀和幻讀問題。
read committed(讀已提交資料):只允許事務讀取已經被其他事務提交的變更資料,可避免髒讀,仍會出現不可重複讀和幻讀問題。
repeatable read(可重複讀):確保事務可以多次從乙個欄位中讀取相同的值,在此事務持續期間,禁止其他事務對此欄位的更新,可以避免髒讀和不可重複讀,仍會出現幻讀問題。
serializable(序列化):確保事務可以從乙個表中讀取相同的行,在這個事務持續期間,禁止其他事務對該錶執行插入、更新和刪除操作,可避免所有併發問題,但效能非常低。
@transactional(isolation = isolation.default) react需要了解的一些概念
高階元件本質上是乙個函式,是可以傳遞乙個元件作為引數,並且會返回乙個新的元件,可以通過props的形式傳遞給目標元件,這樣目標元件可以直接在props裡面獲取使用就可以,在工作中,我們使用的connect withrouter 還有一些自己封裝復用的元件 basicfram公共標題 class he...
Android學習需要了解的一些基本概念
android系統主要由五個部分組成 自下而上 1.linux核心 2.資料庫 3.android執行時 4.應用程式框架 5.應用程式 android四大元件 activity service broadcastreceiver contentprovider android所有ui元件都繼承vi...
OpenGL程式設計需要了解的一些概念
本部落格的內容出自於 僅根據自己的理解記錄下對自己很有幫助的地方 opengl是什麼?opengl可以認為是乙個api,但具體來說opengl值規定了函式如何執行和輸出值,但沒有定義如何實現,具體實現細節是由顯示卡的生產商完成的。所以有時候opengl的bug可以通過公升級驅動來解決。opengl早...