Spring事務與數據庫事務

原文鏈接:橙子的博客——Spring事務與數據庫事務

什麼是事務

在我理解看來,事務就是說做某一件事,這件事的可大可小;比如說:“去做飯了”,這就是一個事務;其中做飯這件事情中你也可以拆成許多小事情,比如說:“去買菜”、“去洗菜”、“去炒菜”、等,這些也都是一個事務;同樣在我們系統中,你去點擊某個按鈕去完成某一個業務操作,這你也可以把她看做一件事務;而在這個操作中,可能會有一些新增、刪除等行爲,這些也都可以看做一個事務。

但是實際我們定義的事務是具有一定特性的,比如,你做飯,可能做一半就不做了,這在現實生活中是存在的;但是對於一個事物來說,你要麼就是把飯做完了,要麼就沒有做,就這兩種狀態,不會存在中間的狀態。

事務的特性

我們上邊說了事務都具有一定的特性,總體上有這麼4種:

  • 原子性:要麼都是成功的,要麼都是失敗的。比如你做飯這件事,有多種行爲,買菜、洗菜、炒菜等,要麼這些行爲你就都做了,要麼這些行爲你都沒做;不會有隻買了菜但沒有洗、炒這種情況
  • 一致性:一個事務中要麼都是操作之前的狀態、要麼都是操作之後的狀態;(和原子性有區別、原子性強調有沒有做成功,一致性強調的是事務的狀態)
  • 隔離性:多個事物之間互不影響
  • 持久性:事務提交成功後,數據的修改永久生效

什麼是數據庫事務

這是數據庫自有的,比如myql,通常我們每次修改都是默認自動提交的,這就是執行了一個事務;這樣看來我們每一個修改行爲都可以看做一次mysql數據庫的事務。
但是如果是oracle,默認的好像是我們要手動敲寫commit命令,這個事務纔會提交;但是我們可能執行了多次修改才執行的commit命令,所以這多次修改我們也可以看做一次事務。
(當然Mysql也可以設置爲手動提交)

什麼是Spring事務

Spring事務其實本質上來說是對數據庫事務的封裝,它是拿到數據庫的連接,可能在這次連接中執行一次或者多次數據庫操作,然後再由spring來控制數據庫事務的提交或者回滾,當然這其中Spring對事務管理還有一些更好的優化等。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章