本發(fā)明涉及數(shù)據(jù)處理和金融科技,尤其涉及一種多數(shù)據(jù)庫事務切面管理方法、裝置、設備及存儲介質(zhì)。
背景技術:
1、在金融領域的業(yè)務系統(tǒng)中,通常情況下,單一業(yè)務場景往往使用單個數(shù)據(jù)庫來處理數(shù)據(jù)。這種情況下,spring框架提供的事務管理器能夠有效地保證數(shù)據(jù)庫的事務性操作,通過提交和回滾機制來確保數(shù)據(jù)的一致性。然而,隨著國產(chǎn)數(shù)據(jù)庫替代浪潮的推進,越來越多的金融系統(tǒng)面臨對現(xiàn)有數(shù)據(jù)庫的改造和遷移,尤其是在信創(chuàng)環(huán)境下,舊數(shù)據(jù)庫和新數(shù)據(jù)庫需要在一段時間內(nèi)同時運行。
2、在這種分批遷移數(shù)據(jù)的過程中,系統(tǒng)不僅要與原有數(shù)據(jù)庫進行交互,還需要對新引入的信創(chuàng)數(shù)據(jù)庫進行操作。然而,現(xiàn)有的事務管理機制主要是為單數(shù)據(jù)庫設計,無法支持同時對多個數(shù)據(jù)庫的事務進行統(tǒng)一管理。這導致在某些場景下,盡管事務管理器能夠?qū)我粩?shù)據(jù)庫的事務進行提交或回滾,但無法保證跨多個數(shù)據(jù)庫的事務一致性。如果系統(tǒng)在某個數(shù)據(jù)庫上事務提交成功,而另一個數(shù)據(jù)庫上事務失敗,將會造成數(shù)據(jù)不一致,進而引發(fā)金融業(yè)務功能的異常,甚至產(chǎn)生錯誤數(shù)據(jù),直接影響業(yè)務運營的穩(wěn)定性和準確性。
3、這種現(xiàn)有技術的不足,在舊數(shù)據(jù)庫與信創(chuàng)數(shù)據(jù)庫并行使用的情況下尤為明顯,尤其是當需要對多個數(shù)據(jù)庫的事務進行一致性管理時,現(xiàn)有的事務管理器無法滿足實際需求,無法協(xié)調(diào)和處理多數(shù)據(jù)庫環(huán)境下的事務操作,造成金融系統(tǒng)在遷移過程中的業(yè)務風險。
技術實現(xiàn)思路
1、本發(fā)明的主要目的在于提供一種多數(shù)據(jù)庫事務切面管理方法、裝置、設備及存儲介質(zhì),旨在解決現(xiàn)有技術中事務管理器無法同時對多個數(shù)據(jù)庫進行統(tǒng)一的事務提交和回滾操作,導致可能產(chǎn)生錯誤數(shù)據(jù),影響業(yè)務功能的正常使用的技術問題。
2、為實現(xiàn)上述目的,本發(fā)明提供一種多數(shù)據(jù)庫事務切面管理方法,包括:
3、當調(diào)用業(yè)務方法時,判斷所述業(yè)務方法是否包含多數(shù)據(jù)庫事務控制的注解;
4、若所述業(yè)務方法包含多數(shù)據(jù)庫事務控制的注解,使用事務切面管理器攔截所述業(yè)務方法的執(zhí)行;
5、根據(jù)所述注解中指定的多個數(shù)據(jù)庫名稱,分別為每個數(shù)據(jù)庫生成事務管理器和事務對象,并將所述事務管理器和事務對象存儲于當前線程的threadlocal變量中;
6、執(zhí)行所述業(yè)務方法,并在所述業(yè)務方法的執(zhí)行過程中監(jiān)控執(zhí)行狀態(tài),檢測是否發(fā)生異常;
7、若所述業(yè)務方法成功執(zhí)行,從所述threadlocal變量中提取所述事務管理器和事務對象,依次對每個事務執(zhí)行commit操作;
8、若所述業(yè)務方法執(zhí)行過程中發(fā)生異常,從所述threadlocal變量中提取相應的事務管理器及事務對象,逐個執(zhí)行rollback操作,回滾所有事務。
9、進一步地,為實現(xiàn)上述目的,本發(fā)明提供一種多數(shù)據(jù)庫事務切面管理裝置,包括:
10、注解檢測模塊,用于當調(diào)用業(yè)務方法時,判斷所述業(yè)務方法是否包含多數(shù)據(jù)庫事務控制的注解;
11、切面攔截模塊,用于若所述業(yè)務方法包含多數(shù)據(jù)庫事務控制的注解,使用事務切面管理器攔截所述業(yè)務方法的執(zhí)行;
12、事務初始化模塊,用于根據(jù)所述注解中指定的多個數(shù)據(jù)庫名稱,分別為每個數(shù)據(jù)庫生成事務管理器和事務對象,并將所述事務管理器和事務對象存儲于當前線程的threadlocal變量中;
13、業(yè)務執(zhí)行與監(jiān)控模塊,用于執(zhí)行所述業(yè)務方法,并在所述業(yè)務方法的執(zhí)行過程中監(jiān)控執(zhí)行狀態(tài),檢測是否發(fā)生異常;
14、事務提交模塊,用于若所述業(yè)務方法成功執(zhí)行,從所述threadlocal變量中提取所述事務管理器和事務對象,依次對每個事務執(zhí)行commit操作;
15、事務回滾模塊,用于若所述業(yè)務方法執(zhí)行過程中發(fā)生異常,從所述threadlocal變量中提取相應的事務管理器及事務對象,逐個執(zhí)行rollback操作,回滾所有事務。
16、進一步地,為實現(xiàn)上述目的,本發(fā)明還提供一種計算機設備,所述計算機設備包括存儲器、處理器以及存儲在所述存儲器上并可在所述處理器上運行的多數(shù)據(jù)庫事務切面管理程序,所述多數(shù)據(jù)庫事務切面管理程序被所述處理器執(zhí)行時實現(xiàn)如上述所述的多數(shù)據(jù)庫事務切面管理方法的步驟。
17、進一步地,為實現(xiàn)上述目的,本發(fā)明還提供一種計算機可讀存儲介質(zhì),所述存儲介質(zhì)上存儲有多數(shù)據(jù)庫事務切面管理程序,所述多數(shù)據(jù)庫事務切面管理程序被處理器執(zhí)行時實現(xiàn)如上所述的多數(shù)據(jù)庫事務切面管理方法的步驟。
18、有益效果:本發(fā)明涉及數(shù)據(jù)處理技術領域,公開了一種多數(shù)據(jù)庫事務切面管理方法,通過調(diào)用業(yè)務方法時,判斷是否包含多數(shù)據(jù)庫事務控制注解。當注解存在時,利用事務切面管理器攔截業(yè)務方法,創(chuàng)建與多個數(shù)據(jù)庫對應的事務管理器和事務對象,并將這些對象存儲于線程本地變量中。在執(zhí)行過程中,實時監(jiān)控業(yè)務方法的執(zhí)行狀態(tài),檢測是否發(fā)生異常。業(yè)務方法成功執(zhí)行后,從線程中提取事務管理器,依次執(zhí)行提交操作。若發(fā)生異常,執(zhí)行回滾操作,確保所有數(shù)據(jù)庫的事務恢復到初始狀態(tài)。本發(fā)明通過在多數(shù)據(jù)庫環(huán)境下生成多個事務管理器和事務對象,并利用事務切面管理器進行統(tǒng)一管理,可以有效地解決現(xiàn)有事務管理器無法同時管理多個數(shù)據(jù)庫的問題。通過將事務管理器和事務對象存儲在線程本地變量中,使得每個線程可以獨立管理其對應的事務,避免了線程間的數(shù)據(jù)污染。通過對事務的統(tǒng)一提交和異常時的回滾操作,確保了多個數(shù)據(jù)庫之間的數(shù)據(jù)一致性,防止了因部分數(shù)據(jù)庫事務提交失敗而導致的數(shù)據(jù)不一致問題。
1.一種多數(shù)據(jù)庫事務切面管理方法,其特征在于,包括以下步驟:
2.如權利要求1所述的多數(shù)據(jù)庫事務切面管理方法,其特征在于,當調(diào)用業(yè)務方法時,判斷所述業(yè)務方法是否包含多數(shù)據(jù)庫事務控制的注解,包括:
3.如權利要求1所述的多數(shù)據(jù)庫事務切面管理方法,其特征在于,若所述業(yè)務方法包含多數(shù)據(jù)庫事務控制的注解,使用事務切面管理器攔截所述業(yè)務方法的執(zhí)行,包括:
4.如權利要求1所述的多數(shù)據(jù)庫事務切面管理方法,其特征在于,根據(jù)所述注解中指定的多個數(shù)據(jù)庫名稱,分別為每個數(shù)據(jù)庫生成事務管理器和事務對象,并將所述事務管理器和事務對象存儲于當前線程的threadlocal變量中,包括:
5.如權利要求1中所述的多數(shù)據(jù)庫事務切面管理方法,其特征在于,執(zhí)行所述業(yè)務方法,并在所述業(yè)務方法的執(zhí)行過程中監(jiān)控執(zhí)行狀態(tài),檢測是否發(fā)生異常,包括:
6.如權利要求1所述的多數(shù)據(jù)庫事務切面管理方法,其特征在于,從所述threadlocal變量中提取所述事務管理器和事務對象,依次對每個事務執(zhí)行commit操作,包括:
7.如權利要求1所述的多數(shù)據(jù)庫事務切面管理方法,其特征在于,從所述threadlocal變量中提取相應的事務管理器及事務對象,逐個執(zhí)行rollback操作,回滾所有事務,包括:
8.一種多數(shù)據(jù)庫事務切面管理裝置,其特征在于,所述多數(shù)據(jù)庫事務切面管理裝置包括:
9.一種計算機設備,其特征在于,所述計算機設備包括存儲器、處理器以及存儲在所述存儲器上并可以在所述處理器上運行的多數(shù)據(jù)庫事務切面管理程序,所述多數(shù)據(jù)庫事務切面管理程序被所述處理器執(zhí)行時實現(xiàn)如權利要求1-7中任一項所述的多數(shù)據(jù)庫事務切面管理方法的步驟。
10.一種計算機可讀存儲介質(zhì),其特征在于,所述存儲介質(zhì)上存儲有多數(shù)據(jù)庫事務切面管理程序,所述多數(shù)據(jù)庫事務切面管理程序被處理器執(zhí)行時實現(xiàn)如權利要求1-7中任一項所述的多數(shù)據(jù)庫事務切面管理方法的步驟。