跨資料庫支持多欄位組合的自動編碼方法和系統的製作方法
2023-05-14 16:37:51 1
+namesp+I]+"=,".keys[i]+,"w;}QueryqueryObject=getMibernateTempiatei).getSessionFactory.getCuiTentSession.crealeQuei'y{querySiring);ListtempList=queryObject.1ist;ilttempLisr==null){return0;jelse{Objecttemp=tenipList.1terator.next;il'(tenip==null)temp='V;returnInteger.興seInt(t€mp,toStting);/纖考讀取操作}}catch(RuntimeExceptionre){log,enOr("getmaxfailed're);throwre;I}I四、存儲管理模塊存儲管理模塊用於管理存儲空間,存儲管理模塊在服務啟動模塊啟動的時候,在內存中創建存儲空間。所述存儲空間包括存儲結構和數據內容,存儲結構用於存儲不定長條目的信息,能夠支持快速查找。存儲結構至少包括表名、自動編碼欄位名、自動編碼欄位的當前最大值、關聯欄位名、關聯欄位值、更新時間。其中,關聯欄位名和關聯欄位值可以有多個,但應當保持一一對應關係。所述數據內容包括零到多條符合該存儲結構的數據項,每一條所述數據項構成一個信息條目。在創建初始存儲空間的時候,只有存儲結構,沒有數據內容。也就是,所述初始存儲空間包括所述存儲結構和零條數據項。存儲結構可以採用哈希表、鍊表、隊列、數組、向量、堆等方式實現,優選哈希表。存儲結構的內容還包括編碼增量和編碼格式。關聯欄位名可以有零到多個。表名、關聯欄位名和自動編碼欄位名可以分別存儲,也可以存儲在一個變量中,比如字符串變量,中間用分隔符,如逗號、分號、空格等在表名和欄位名中不會用到的特殊符號隔開。本實施例中使用#分隔符。例以下是一個基於JAVA的一種實現方式舉例。在本例中,表名、關聯欄位名和自動編碼欄位名按順序存放在tableColumn字符串中,以#作為分隔符。並且,將具體的值存放在二級子表中,包括自動編碼欄位的當前最大值和關聯欄位值,二級子表用ConcurrentHashMap實現。publicclasslabIcSidJStringtableColumn;//農名、關聯欄位名和0動編碼欄位名intSoetIMiix(.)999;iti!ScetlMin1:1SidKeyStrategyks;//編碼增量ISidValueStrategyvs;//編碼格式DateupdateTime;//史新時聞,以天為華·位Cncuircrilliiis!iMapSecdMap=newConcurrentHashMap;//自動編碼ψ段的當前M大值和關聯寧-段值privateIDataBasedataBaseDao;//數扼庫接口//構造函數publicTabieSid(IDataBasedataBaseDao,StringtableColumn){this.dataBaseDao=dataBaseDao;this.tableColumn=tableColumn;ks=newDefaultSidKeyStrategy;vs=newSidValueStrategyO;updateTime=newDateQ;}//向級表屮註冊二級子表,_丨4動編碼欄位的3前最大值和關聯欄位值publicintGetIntSid(String[]keys)throwsException{Stringkey=ks.CreateGabteColumiiJceys+hZ/ftl造—級/·衣關鍵字synchronized(this)|//K、/:用synchronizedM步註冊杏找代媽塊,起到鎖定作用if(SeedMap.get(key)=null)fintmax=dataBaseDao.GetDBMaxSeed(tableColumn,keys);//輝IIJ數據作接II實現if(max=......O)\max^this.SeedMin;}this.SetSeed(keys,max);I}intincSeedvs.Create(((I[iteger)SeedMap.get(key)).1nlValue,this.SeedMin,tliis.SeedMax);//V1:見1、'述「編W規則投塊」例中的「編W遞增』的接II實現」SeedMap.put(key,incSeed);returnincSeed;}}//構造+:級/·表關鍵?』·的接I丨定義publicinterfaceISidKeyStrategyextendsSerializaMefStringCreate(Stringhead,Stringf]segs);I權利要求1.一種跨資料庫支持多欄位組合的自動編碼方法,其特徵在於,包括以下步驟參數配置步驟,輸入自動編碼的參數配置項,所述參數配置項包括資料庫類型;服務啟動步驟,加載所述參數配置項,根據所述資料庫類型實例化資料庫接口,創建初始存儲空間;所述存儲空間包括存儲結構和數據內容,所述存儲結構包括表名、自動編碼欄位名、關聯欄位名、自動編碼欄位當前最大值和關聯欄位和更新時間,所述數據內容包括零到多條符合該存儲結構的數據項,所述初始存儲空間包括所述存儲結構和零條數據項;編碼獲取步驟,向用戶提供所需編碼的最大編碼,包括判斷子步驟、輸出子步驟和編碼註冊子步驟;所述判斷子步驟,根據查找條件在所述存儲空間內獲取最大值,如果獲取成功則進入輸出子步驟,如果獲取失敗則進入編碼註冊子步驟;所述輸出子步驟,按照編碼輸出規則輸出下一編碼,並將所述更新時間更新為當前時間;所述編碼註冊子步驟,包括查找所述最大值;向所述存儲空間註冊新的數據項;返回所述最大值;進入輸出子步驟。2.根據權利要求1所述的跨資料庫支持多欄位組合的自動編碼方法,其特徵在於,所述資料庫接口包括最大值查找接口函數;所述編碼註冊子步驟進一步包括通過所述最大值查找接口函數查找所述最大值,如果沒找到,則將默認值作為所述最大值。3.根據權利要求1所述的跨資料庫支持多欄位組合的自動編碼方法,其特徵在於,所述存儲結構進一步包括所述編碼增量和編碼格式;該方法進一步包括以下步驟定製編碼輸出規則步驟,所述編碼輸出規則包括編碼遞增規則和編碼輸出格式,所述編碼遞增規則用於規定編碼增量,所述編碼增量默認為1,所述編碼輸出格式用於規定所述編碼格式,所述編碼格式默認為整數。4.根據權利要求1所述的跨資料庫支持多欄位組合的自動編碼方法,其特徵在於,所述編碼註冊子步驟進一步包括鎖定步驟和解鎖步驟;鎖定步驟,在所述查找所述最大值之前鎖定註冊查找代碼塊;解鎖步驟,在向所述存儲空間註冊新的數據項之後,在所述返回所述最大值之前解鎖該註冊查找代碼塊。5.根據權利要求1所述的跨資料庫支持多欄位組合的自動編碼方法,其特徵在於,所述參數配置項還包括自動清理周期和數據超時時間;該方法進一步包括以下步驟在所述自動清理周期清除超過所述數據超時時間的信息條目。6.一種跨資料庫支持多欄位組合的自動編碼系統,其特徵在於,包括參數配置模塊,用於輸入自動編碼的參數配置項,所述參數配置項包括資料庫類型;服務啟動模塊,用於啟動所述參數配置模塊,加載所述參數配置項;以及,用於根據所述資料庫類型實例化資料庫接口;以及,啟動存儲管理模塊,創建初始存儲空間;存儲管理模塊,用於管理存儲空間,所述存儲空間包括存儲結構和數據內容,所述存儲結構包括表名、自動編碼欄位名、關聯欄位名、自動編碼欄位當前最大值和關聯欄位和更新時間,所述數據內容包括零到多條符合該存儲結構的數據項,所述初始存儲空間包括所述存儲結構和零條數據項;編碼獲取模塊,用於向用戶提供所需的編碼的最大編碼,包括判斷子模塊,輸出子模塊和編碼註冊子模塊;判斷子模塊,用於根據查找條件在所述存儲空間內獲取最大值,如果獲取成功則調用輸出子模塊,如果獲取失敗則調用編碼註冊子模塊;輸出子模塊,用於按照編碼輸出規則輸出下一編碼,並將所述更新時間更新為當前時間;編碼註冊子模塊,用於調用所述資料庫接口模塊的最大值查找接口函數查找最大值以及用於向所述存儲管理模塊的存儲空間註冊新的數據項;以及用於返回所述最大值;以及用於調用輸出子模塊。7.根據權利要求6所述的跨資料庫支持多欄位組合的自動編碼系統,其特徵在於,該系統還包括資料庫接口模塊,用於定義多種資料庫類型的資料庫接口,所述資料庫接口包括最大值查找接口函數;所述編碼註冊子模塊進一步用於調用所述資料庫接口模塊,查找所述最大值,如果沒找到,則將默認值作為所述最大值。8.根據權利要求6所述的跨資料庫支持多欄位組合的自動編碼系統,其特徵在於,所述存儲管理模塊的所述存儲結構進一步包括所述編碼增量和編碼格式;該系統進一步包括編碼輸出規則模塊,用於定製編碼輸出規則,所述編碼輸出規則包括編碼遞增規則和編碼輸出格式,所述編碼遞增規則用於規定編碼增量,所述編碼增量默認為1,所述編碼輸出格式用於規定所述編碼格式,所述編碼格式默認為整數。9.根據權利要求6所述的跨資料庫支持多欄位組合的自動編碼系統,其特徵在於,所述編碼註冊子模塊進一步用於在所述查找所述最大值之前鎖定註冊查找代碼塊以及在向所述存儲空間註冊新的數據項之後,在返回所述最大值之前解鎖註冊查找代碼塊。10.根據權利要求6所述的跨資料庫支持多欄位組合的自動編碼系統,其特徵在於,所述參數配置模塊的所述參數配置項還包括自動清理周期和數據超時時間;該系統進一步包括自動清理模塊,用於在自動清理周期清除超過所述數據超時時間的信息條目。全文摘要本發明公開了一種跨資料庫支持多欄位組合的自動編碼方法和系統,方法包括參數配置步驟、服務啟動步驟和編碼獲取步驟,編碼獲取步驟包括判斷子步驟、輸出子步驟和編碼註冊子步驟。相應地,系統包括參數配置模塊、服務啟動模塊和編碼獲取模塊,編碼獲取模塊包括判斷子模塊、輸出子模塊和編碼註冊子模塊。本發明可以有效地提高了自動編碼的並發度,使軟體開發架構的可移植性得以顯著改進,在多處使用自動編碼的情況下,採用本發明能夠有效減少代碼量、提高開發速度和編碼質量。文檔編號G06F17/30GK103020285SQ20121058090公開日2013年4月3日申請日期2012年12月27日優先權日2012年12月27日發明者廖中華申請人:北京仿真中心