一種數(shù)據(jù)修改日志的實現(xiàn)方法和系統(tǒng)及應用服務(wù)器的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機技術(shù)領(lǐng)域,特別涉及一種數(shù)據(jù)修改日志的實現(xiàn)方法和系統(tǒng)及應用服務(wù)器。
【背景技術(shù)】
[0002]隨著計算機行業(yè)的快速發(fā)展,信息管理系統(tǒng)中需要使用的數(shù)據(jù)越來越多。為了保存數(shù)據(jù),通常是在數(shù)據(jù)庫中保存各個數(shù)據(jù)表,并將數(shù)據(jù)保存到相應的數(shù)據(jù)表中。另外,隨著各種業(yè)務(wù)應用的發(fā)展,經(jīng)常需要對數(shù)據(jù)庫中數(shù)據(jù)表里的數(shù)據(jù)進行修改。為了方便業(yè)務(wù)應用的使用,需要對數(shù)據(jù)修改進行記錄,實現(xiàn)數(shù)據(jù)修改日志。
[0003]目前,實現(xiàn)數(shù)據(jù)修改日志的方式包括:在數(shù)據(jù)庫側(cè),通過觸發(fā)器的機制采集數(shù)據(jù)庫的數(shù)據(jù)表中當前數(shù)據(jù)修改的信息,比如修改數(shù)據(jù)的時間信息和被修改的數(shù)據(jù)信息;在應用系統(tǒng)側(cè),采集當前修改數(shù)據(jù)的用戶信息、當前修改數(shù)據(jù)的時間信息;將數(shù)據(jù)庫側(cè)采集的時間信息與應用系統(tǒng)側(cè)用戶的修改數(shù)據(jù)的時間信息進行時間點模糊匹配,修改數(shù)據(jù)的時間最接近的那個用戶則為修改當前數(shù)據(jù)的用戶,最后將用戶信息、時間信息和數(shù)據(jù)變化信息封裝成數(shù)據(jù)修改日志保存到數(shù)據(jù)庫的數(shù)據(jù)修改日志表中。
[0004]可見,在現(xiàn)有技術(shù)中,數(shù)據(jù)修改信息的采集只在數(shù)據(jù)庫層完成,因此只能根據(jù)數(shù)據(jù)庫中數(shù)據(jù)被修改的時間信息與應用系統(tǒng)側(cè)用戶修改數(shù)據(jù)的時間信息進行匹配,來確定修改數(shù)據(jù)的用戶,這樣,如果系統(tǒng)并發(fā)量很大,數(shù)據(jù)修改信息根據(jù)時間點模糊匹配的用戶信息往往不準確,導致數(shù)據(jù)修改日志不準確。
【發(fā)明內(nèi)容】
[0005]本發(fā)明提供一種數(shù)據(jù)修改日志的實現(xiàn)方法和系統(tǒng)及應用服務(wù)器,能夠提高數(shù)據(jù)修改日志的準確性。
[0006]本發(fā)明的技術(shù)方案包括:
[0007]本發(fā)明一個方面提出了一種數(shù)據(jù)修改日志的實現(xiàn)方法,將數(shù)據(jù)庫中的每一個業(yè)務(wù)表映射為對應的實體類,實體類的類名表示業(yè)務(wù)表的名稱,實體類的業(yè)務(wù)對象的屬性表示業(yè)務(wù)表中的字段數(shù)據(jù);定義能夠調(diào)用實體類并采集數(shù)據(jù)修改信息的第一接口 ;還包括:
[0008]在用戶修改業(yè)務(wù)表中的數(shù)據(jù)后,調(diào)用所述第一接口,得到實體類的業(yè)務(wù)對象在數(shù)據(jù)修改前后的屬性值,利用屬性值的變化獲取數(shù)據(jù)修改信息;
[0009]利用所述數(shù)據(jù)修改信息、所述用戶的信息和當前時間,生成數(shù)據(jù)修改日志。
[0010]優(yōu)選地,所述定義能夠調(diào)用實體類并采集數(shù)據(jù)修改信息的第一接口包括:使用反射機制封裝第一接口為:
[0011]public Map〈String, Object [] >getBizObjectModifiedInfo (ObjectoldObj, Object newObj);
[0012]其中,兩個參數(shù)(Object oldObj, Object newObj)分別為修改前的業(yè)務(wù)對象和修改后的業(yè)務(wù)對象,返回值為Map集合,Key為業(yè)務(wù)對象的屬性名稱,Value為Object類型的數(shù)組,數(shù)組第一個元素表示業(yè)務(wù)對象修改前的屬性值,數(shù)組第二個元素表示業(yè)務(wù)對象修改之后的屬性值。
[0013]優(yōu)選地,所述第一接口中,參數(shù)類型為超類Object。
[0014]優(yōu)選地,進一步包括:采用XML配置文件,配置所述數(shù)據(jù)庫的業(yè)務(wù)表中需要記錄數(shù)據(jù)修改日志的關(guān)鍵業(yè)務(wù)字段;
[0015]所述利用該屬性值變化獲取數(shù)據(jù)修改信息包括:從所述實體類的業(yè)務(wù)對象在數(shù)據(jù)修改前后的屬性值變化中,找出所述XML配置文件所配置的所述關(guān)鍵業(yè)務(wù)字段的屬性值變化,得到數(shù)據(jù)修改信息。
[0016]可選地,
[0017]由應用服務(wù)器執(zhí)行所述的調(diào)用和生成;
[0018]和/ 或,
[0019]在生成數(shù)據(jù)修改日志之后,進一步包括:由應用服務(wù)器根據(jù)預先設(shè)置,在生成的數(shù)據(jù)修改日志中添加用戶的IP地址和/或業(yè)務(wù)模塊名稱;
[0020]和/ 或,
[0021]在生成數(shù)據(jù)修改日志之后,進一步包括:應用服務(wù)器將所述數(shù)據(jù)修改日志保存為應用服務(wù)器中的文件,或者保存到所述數(shù)據(jù)庫中專用的數(shù)據(jù)修改日志表中。
[0022]本發(fā)明另一方面提出了一種應用服務(wù)器,包括:
[0023]映射單元,用于將數(shù)據(jù)庫中的每一個業(yè)務(wù)表映射為對應的實體類,實體類的類名表示業(yè)務(wù)表的名稱,實體類的業(yè)務(wù)對象的屬性表示業(yè)務(wù)表中的字段數(shù)據(jù);
[0024]接口實現(xiàn)單元,用于定義能夠調(diào)用實體類并采集數(shù)據(jù)修改信息的第一接口 ;在用戶修改業(yè)務(wù)表中的數(shù)據(jù)后,調(diào)用所述第一接口,
[0025]修改信息獲取單元,用于得到所述第一接口的調(diào)用返回值,得到實體類的業(yè)務(wù)對象在數(shù)據(jù)修改前后的屬性值,利用屬性值的變化獲取數(shù)據(jù)修改信息;
[0026]日志生成單元,用于利用所述數(shù)據(jù)修改信息、所述用戶的信息和當前時間,生成數(shù)據(jù)修改日志。
[0027]優(yōu)選地,所述接口實現(xiàn)單元包括:
[0028]反射機制封裝子單元,用于使用反射機制封裝出第一接口為:
[0029]public Map〈String, Object [] >getBizObjectModifiedInfo (ObjectoldObj, Object newObj);
[0030]其中,兩個參數(shù)(Object oldObj, Object newObj)分別為修改前的業(yè)務(wù)對象和修改后的業(yè)務(wù)對象,返回值為Map集合,Key為業(yè)務(wù)對象的屬性名稱,Value為Object類型的數(shù)組,數(shù)組第一個元素表示業(yè)務(wù)對象修改前的屬性值,數(shù)組第二個元素表示業(yè)務(wù)對象修改之后的屬性值。
[0031]優(yōu)選地,進一步包括:配置單元,用于采用XML配置文件,配置所述數(shù)據(jù)庫的業(yè)務(wù)表中需要記錄數(shù)據(jù)修改日志的關(guān)鍵業(yè)務(wù)字段;
[0032]所述修改信息獲取單元,用于從所述實體類的業(yè)務(wù)對象在數(shù)據(jù)修改前后的屬性值變化中,找出所述配置單元配置的XML配置文件中所述關(guān)鍵業(yè)務(wù)字段的屬性值變化,得到數(shù)據(jù)修改信息。
[0033]可選地,進一步包括:
[0034]第一日志處理單元,用于由應用服務(wù)器根據(jù)預先設(shè)置,在生成的數(shù)據(jù)修改日志中添加用戶的IP地址和/或業(yè)務(wù)模塊名稱;和/或,
[0035]第二日志處理單元,用于將所述數(shù)據(jù)修改日志保存為應用服務(wù)器中的文件,或者保存到外部數(shù)據(jù)庫中專用的數(shù)據(jù)修改日志表中。
[0036]本發(fā)明再一個方面提出了一種數(shù)據(jù)修改日志的實現(xiàn)系統(tǒng),包括數(shù)據(jù)庫以及上述任意一種應用服務(wù)器。
[0037]可見,本發(fā)明實施例至少具有如下的有益效果:
[0038]1、本發(fā)明實施例提供的數(shù)據(jù)修改日志的實現(xiàn)方法和系統(tǒng)及應用服務(wù)器采用了基于面向?qū)ο蟮臄?shù)據(jù)修改日志實現(xiàn)方式,具體地,是將數(shù)據(jù)庫中的每一個業(yè)務(wù)表映射為對應的實體類,也就是說用應用服務(wù)器的軟件系統(tǒng)中的實體類來表示數(shù)據(jù)庫中的業(yè)務(wù)表,之后,再定義能夠調(diào)用實體類并采集數(shù)據(jù)修改信息的應用服務(wù)器中的第一接口,這樣,通過調(diào)用第一接口,則可以得到數(shù)據(jù)的修改信息。可見,數(shù)據(jù)修改信息的采集不是在數(shù)據(jù)庫層完成的,而是在應用服務(wù)器側(cè)完成的,這樣,應用服務(wù)器則可以準確地確定在該應用服務(wù)器上的哪個用戶對數(shù)據(jù)進行了修改,生成的包括用戶信息和數(shù)據(jù)修改信息的數(shù)據(jù)修改日志的準確性則大大提尚。
[0039]2、進一步地,本發(fā)明實施例還提出了具體的使用反射機制封裝的接口定義,public Map<String,Object[]>getBizObjectModifiedlnfo(Object oldObj,ObjectnewObj);由于該接口可以針對任何實體類進行調(diào)用,且接口定義中的參數(shù)類型可以是超類Object,因此,此采集數(shù)據(jù)修改信息的接口具有通用性,大大增加了本發(fā)明實施例的實用性。
[0040]3、進一步地,在本發(fā)明實施例中,可以采用XML配置文件的方式,配置需要記錄數(shù)據(jù)修改日志的關(guān)鍵業(yè)務(wù)字段范圍,所以在實現(xiàn)數(shù)據(jù)修改日志時,無需對所有的數(shù)據(jù)判斷其業(yè)務(wù)對象的屬性值是否發(fā)生變化,從而提高了日志實現(xiàn)過程的效率,減少了數(shù)據(jù)修改日志的冗余數(shù)據(jù)。
【附圖說明】
[0041]圖1是在本發(fā)明一個實施例中實現(xiàn)數(shù)據(jù)修改日志的方法的流程圖。
[0042]圖2是在本發(fā)明另一個實施例中實現(xiàn)數(shù)據(jù)修改日志的方法的流程圖。
[0043]圖3是在本發(fā)明一個實施例中形成的實體類的示意圖。
[0044]圖4是在本發(fā)明一個實施例中采用XML配置文件的方式配置業(yè)務(wù)表中需要記錄數(shù)據(jù)修改日志的關(guān)鍵業(yè)務(wù)字段范圍的代碼實現(xiàn)。
[0045]圖5是在本發(fā)明一個實施例中數(shù)據(jù)修改日志表的示意圖。
[0046]圖6是在本發(fā)明一個實施例中的應用服務(wù)器的結(jié)構(gòu)示意圖。
[0047]圖7是在本發(fā)明另一個實施例中的應用服務(wù)器的結(jié)構(gòu)示意圖。
【具體實施方式】
[0048]下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述。顯然,所描述的實施例僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
[0049]本發(fā)明一個實施例提出了一種數(shù)據(jù)修改日志的實現(xiàn)方法,參見圖1,該方法包括:
[0050]步驟101:將數(shù)據(jù)庫中的每一個業(yè)務(wù)表映射為對應的實體類,實體類的類名表示業(yè)務(wù)表的名稱,實體類的業(yè)務(wù)對象的屬性表示業(yè)務(wù)表中的字段數(shù)據(jù);定義能夠調(diào)用實體類并采集數(shù)據(jù)