[發明專利]一種融合原生事務和邏輯事務的方法在審
| 申請號: | 201410492350.4 | 申請日: | 2014-09-24 |
| 公開(公告)號: | CN104199976A | 公開(公告)日: | 2014-12-10 |
| 發明(設計)人: | 周侖;王震 | 申請(專利權)人: | 浪潮通用軟件有限公司 |
| 主分類號: | G06F17/30 | 分類號: | G06F17/30 |
| 代理公司: | 濟南信達專利事務所有限公司 37100 | 代理人: | 姜明 |
| 地址: | 250101 山東*** | 國省代碼: | 山東;37 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 融合 原生 事務 邏輯 方法 | ||
技術領域
本發明涉及云計算技術領域,具體地說是一種實用性強、融合原生事務和邏輯事務的方法。
背景技術
數據庫事務,是指作為單個邏輯工作單元執行的一系列操作,要么完整地執行,要么完全地不執行。事務處理可以確保除非事務性單元內的所有操作都成功完成,否則不會永久更新面向數據的資源。通過將一組相關操作組合為一個要么全部成功要么全部失敗的單元,可以簡化錯誤恢復并使應用程序更加可靠。但是數據庫事務必須保證事務在同一個應用程序中,不適用與多框架之間的使用,不能保證多框架之間的操作使用同一個事務來管理。
另外使用邏輯鎖和事務的結合,會有以下的問題:
1、可能導致死鎖或者阻塞,同一個邏輯事務中,業務代碼在寫操作前要求先鎖定資源,如果鎖定失敗,需要解鎖同一個功能sessionID下的所有的鎖。
2、事務隔離級別,理論上邏輯事務的隔離級別沒有實際用處,主要是給數據庫事務用的,目前需求不是很明確。
3、事務嵌套,用戶需要關心事務隔離級別,需要了解上層事務。
基于此,現提供一種融合原生事務和邏輯事務的方法,該方法保證多框架之間的數據操作能夠存在統一個實際事務中,有效解決上述問題。
發明內容
本發明的技術任務是針對以上不足之處,提供一種實用性強、融合原生事務和邏輯事務的方法。
一種融合原生事務和邏輯事務的方法,其具體實現過程為:
創建事務,初始化事務邊界,指定事務執行方式、事務邊界的類型,這里的事務執行方式包括本地事務和邏輯事務兩種;
啟動事務,配置事務執行方式,決定啟動邏輯事務或者本地事務:當啟動邏輯事務時,記錄事務嵌套邊界類型和環境事務,并創建線程安全的集合來存儲Sql;當啟動本地事務時,記錄事務嵌套邊界類型和環境事務;
加入事務管理,執行Sql,創建數據庫對象實例,當啟用邏輯事務時,創建延遲提交的數據庫對象實例;當啟用本地事務時,使用原生的數據庫對象實例;
延遲提交的數據庫對象實例,緩存要執行的Sql語句、功能SessionID、數據庫對象名到線程安全的集合中;
提交事務,顯示調用事務Complete方法,設置Complete標識,如果啟動的是邏輯事務,此時統一執行線程安全的集合中的Sql語句;
當執行Sql出現異常時,根據啟動事務的類型,選擇是否回滾:啟動的是邏輯事務,則回滾;啟動的是本地事務,則只拋出異常,不進行真正的回滾。
當事務執行方式為邏輯事務嵌套,創建并啟動內部邏輯事務的時候,記錄上層邏輯事務,并根據上層邏輯事務的事務邊界類型和內部邏輯事務的事務邊界類型,啟動內部邏輯事務,決定是否繼承上層邏輯事務,或者自己重新創建邏輯事務,或者啟動本地事務。
當上層邏輯事務失敗時,或者內部邏輯事務失敗,或者全部執行失敗時,根據上層邏輯事務和內部邏輯事務的邊界類型,決定上層邏輯事務、內部邏輯事務是否回滾或者只拋出異常。
本發明的一種融合原生事務和邏輯事務的方法,具有以下優點:
該發明的一種融合原生事務和邏輯事務的方法可以控制是否推遲將數據提交到數據庫;可以解決事務之間的死鎖;能夠做到事務的嵌套使用;保證多框架之間的數據操作能夠存在統一個實際事務中,做到在邏輯事務執行的時候才延遲提交所有數據,并且做到了根據業務場景通過配置啟用邏輯事務;實用性強,適用范圍廣泛,易于推廣。
附圖說明
附圖1為本發明的實現流程圖。
具體實施方式
下面結合附圖和具體實施例對本發明作進一步說明。
本發明提供一種融合原生事務和邏輯事務的方法,如附圖1所示,其具體實現過程為:
創建事務,初始化事務邊界,指定事務執行方式、事務邊界的類型,這里的事務執行方式包括本地事務和邏輯事務兩種;
啟動事務,配置事務執行方式,決定啟動邏輯事務或者本地事務:當啟動邏輯事務時,記錄事務嵌套邊界類型和環境事務,并創建線程安全的集合來存儲Sql;當啟動本地事務時,記錄事務嵌套邊界類型和環境事務;
加入事務管理,執行Sql,創建數據庫對象實例,當啟用邏輯事務時,創建延遲提交的數據庫對象實例;當啟用本地事務時,使用原生的數據庫對象實例;該步驟中原生的數據庫對象實例,直接執行Sql。
延遲提交的數據庫對象實例,緩存要執行的Sql語句、功能SessionID、數據庫對象名到線程安全的集合中;
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于浪潮通用軟件有限公司;,未經浪潮通用軟件有限公司;許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201410492350.4/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:單波紋彈性油箱初始壓力的溫度補償方法
- 下一篇:圖片檢索方法和圖片檢索裝置





