事務學習
一,利用數據庫事務實現應用事務控制,對數據庫操作有什麽要求?
需要使用同一個連接
二,能不能讓事務的所有操作都使用同一個數據庫連接?
單一數據源:可以;多數據源:不可以
三,單一數據源,如何讓事務的所有操作使用同一連接
連接是從dataSource中獲得的,我們改造一下dataSource,把得到的連接放到線程上下文,下一個操作獲取連接時,從線程上下文獲取即可。
四,多數據源的情況下,還能了利用數據庫事務嗎?
能,屬於一個數據源的操作放在一個局部事務中(數據庫事務),當應用事務(全局事務)失敗時,讓這些局部事務都回滾。成功則讓局部事務都提交。
五,應用事務和數據庫事務是同一個嗎?
數據庫事務是數據庫控制多個數據庫操作的,應用事務是應用中控制多個應用操作(方法)的。應用事務借用數據庫事務,把它的操作結果還原。
六,Spring的7種事務傳播行為類型
1、PROPAGATION_REQUIRED:如果當前沒有事務,就創建一個新事務,如果當前存在事務,就加入該事務,該設置是最常用的設置。
2、PROPAGATION_SUPPORTS:支持當前事務,如果當前存在事務,就加入該事務,如果當前不存在事務,就以非事務執行。‘
3、PROPAGATION_MANDATORY:支持當前事務,如果當前存在事務,就加入該事務,如果當前不存在事務,就拋出異常。
4、PROPAGATION_REQUIRES_NEW:創建新事務,無論當前存不存在事務,都創建新事務。
5、PROPAGATION_NOT_SUPPORTED:以非事務方式執行操作,如果當前存在事務,就把當前事務掛起。
6、PROPAGATION_NEVER:以非事務方式執行,如果當前存在事務,則拋出異常。
7、PROPAGATION_NESTED:如果當前存在事務,則在嵌套事務內執行。如果當前沒有事務,則執行與PROPAGATION_REQUIRED類似的操作。
七,事務由哪些部分組成?
1,構成事務的操作,或事務範圍
2,事務控制部分
八,spring事務建模:三個核心
》TransactionDefinition:事務定義
》PlatformTransactionManager:事務管理器
》TransactionStatus:事務的狀態表示
事務學習