面向?qū)ο笾欣胦rm框架實(shí)現(xiàn)數(shù)據(jù)庫操作的方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明涉及數(shù)據(jù)庫應(yīng)用領(lǐng)域,具體是一種面向?qū)ο笾欣肙RM框架實(shí)現(xiàn)數(shù)據(jù)庫操作的方法及系統(tǒng),所述方法:對所有的SQL語句進(jìn)行統(tǒng)一處理,使處理后所有的SQL語句通過通用API接口即可實(shí)現(xiàn)數(shù)據(jù)庫訪問和操作,避免不同數(shù)據(jù)庫接口不同造成的訪問切換,使數(shù)據(jù)庫的訪問簡便化;通過ORM實(shí)體自動生成SQL腳本,生成的過程通過模板元和宏實(shí)現(xiàn),避免了人工記憶大量SQL語句的麻煩,減少人工拼寫的錯誤,提升開發(fā)效率;調(diào)用時(shí)通過鏈?zhǔn)秸{(diào)用的方式對數(shù)據(jù)庫進(jìn)行操作,實(shí)現(xiàn)訪問方式的靈活性。所述系統(tǒng)包括處理模塊、轉(zhuǎn)換模塊和操作模塊,可同樣實(shí)現(xiàn)方法中所述內(nèi)容。本發(fā)明對小型或大型數(shù)據(jù)庫的操作,都使操作簡便化和自動化,有效提升了訪問的效率和正確率。
【專利說明】面向?qū)ο笾欣肙RM框架實(shí)現(xiàn)數(shù)據(jù)庫操作的方法及系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)庫應(yīng)用領(lǐng)域,特別是一種面向?qū)ο笾欣肙RM框架實(shí)現(xiàn)數(shù)據(jù)庫操作的方法及系統(tǒng)。
【背景技術(shù)】
[0002]面向?qū)ο笾?,?dāng)訪問數(shù)據(jù)庫時(shí),因?yàn)閿?shù)據(jù)庫的不同及不同的數(shù)據(jù)庫接口的不同,導(dǎo)致訪問數(shù)據(jù)庫時(shí)需要對訪問方式進(jìn)行切換,使訪問操作十分不便。訪問數(shù)據(jù)庫時(shí),一般是通過sql語言實(shí)現(xiàn),需要拼寫生成各種sql語句,拼寫工作比較麻煩,工作多具有重復(fù)性,且容易出錯。
[0003]現(xiàn)有技術(shù)采用ORM語言訪問數(shù)據(jù)庫,如java和c#中有很多ORM框架,c#中的entity framework、Linq to Sql、NHibernate 等,java 中有 Hibernate、Mybatis 等,其它各種開源的ORM庫也很多。然而,c++的世界中,卻鮮有ORM框架,c++中比較知名的ORM庫應(yīng)該是ODB 了,但是ODB的使用比較麻煩,需要三個庫,寫的ORM代碼還需要ODB專門編譯。
【發(fā)明內(nèi)容】
[0004]為解決上述問題,本發(fā)明的目的在于提供一種面向?qū)ο笾欣肙RM框架實(shí)現(xiàn)數(shù)據(jù)庫操作的方法和系統(tǒng),自動生成SQL語句,消除拼寫錯誤,并通過統(tǒng)一接口訪問數(shù)據(jù)庫,使訪問不同的數(shù)據(jù)庫時(shí)不用切換訪問方式即可實(shí)現(xiàn)訪問,且訪問操作簡單。
[0005]本發(fā)明解決其問題所采用的技術(shù)方案是:
本發(fā)明的實(shí)施例提供了一種面向?qū)ο笾欣肙RM框架實(shí)現(xiàn)數(shù)據(jù)庫操作的方法,根據(jù)ORM框架和業(yè)務(wù)實(shí)體生成對數(shù)據(jù)庫進(jìn)行操作的調(diào)用命令,此調(diào)用命令可以采用鏈?zhǔn)秸{(diào)用的方式生成。
[0006]進(jìn)一步,ORM框架通過模板元結(jié)構(gòu)自動解析此調(diào)用命令并生成對應(yīng)的SQL腳本,其中,ORM框架將業(yè)務(wù)實(shí)體的字體字段和字段值返回給模板元結(jié)構(gòu)后,模板元結(jié)構(gòu)對類型不同、數(shù)量不同的實(shí)體字段進(jìn)行統(tǒng)一解析,生成結(jié)構(gòu)體字段,通過宏獲取結(jié)構(gòu)字段中的字段內(nèi)容,并根據(jù)字段內(nèi)容生成對應(yīng)的SQL腳本。模板元結(jié)構(gòu)可以將類型不同、數(shù)量不同的實(shí)體字段進(jìn)行一致性的解析,解析出來的結(jié)構(gòu)體字段通過宏獲取字段內(nèi)容,從而自動生成SQL腳本,避免人為的拼寫可能產(chǎn)生的錯誤,以及大量的拼寫需要記憶的語句比較多,相應(yīng)省去拼寫的速度較慢而浪費(fèi)時(shí)間。
[0007]進(jìn)一步,通過API接口調(diào)用SQL腳本對數(shù)據(jù)庫進(jìn)行操作;其中,API接口是已經(jīng)轉(zhuǎn)換后的接口,此接口可以提供給所有需要調(diào)用的程序統(tǒng)一調(diào)用,避免不同的數(shù)據(jù)庫調(diào)用方式的切換,當(dāng)程序需要對數(shù)據(jù)庫進(jìn)行操作時(shí),通過ORM實(shí)體轉(zhuǎn)換而自動生成的SQL腳本即可實(shí)現(xiàn)操作。本發(fā)明從整體上簡化了面向?qū)ο笾袑?shù)據(jù)庫進(jìn)行操作的不便,極大地提升了在現(xiàn)有面向?qū)ο蟛僮髦袑?shù)據(jù)庫訪問的速度和效率,尤其是對龐大的系統(tǒng)數(shù)據(jù)庫進(jìn)行操作時(shí),要本發(fā)明所起到的效果是不可替代的。
[0008]其中,本發(fā)明通過可變參數(shù)模板對所有的SQL語句進(jìn)行處理,使處理后的所有SQL語句通過一組封裝后的通用API接口即可被接收識別;對SQL語句統(tǒng)一處理后,SQL語句中參數(shù)的類型和個數(shù)便具有統(tǒng)一性,更容易進(jìn)行接收,從而簡化SQL語句的處理,設(shè)置統(tǒng)一的API接口后,所有的處理程序都可以通過此接口完成對數(shù)據(jù)庫的操作,而無須轉(zhuǎn)換訪問方式。
[0009]本發(fā)明的實(shí)施例提供了一種面向?qū)ο笾欣肙RM框架實(shí)現(xiàn)數(shù)據(jù)庫操作的系統(tǒng),包括:
第一裝置,根據(jù)ORM框架和業(yè)務(wù)實(shí)體生成對數(shù)據(jù)庫進(jìn)行操作的調(diào)用命令;
第二裝置,框架自動解析調(diào)用命令并生成對應(yīng)的SQL腳本;
第三裝置,通過API接口調(diào)用SQL腳本對數(shù)據(jù)庫進(jìn)行操作;
其中,所述API接口為通用的數(shù)據(jù)庫操作接口,其屏蔽了不同數(shù)據(jù)庫操作接口的差異,所述SQL腳本經(jīng)過統(tǒng)一處理后通過API接口進(jìn)行識別與接收。
[0010]通過所述系統(tǒng)簡化對數(shù)據(jù)庫的操作,SQL腳本自動生成,節(jié)省時(shí)時(shí),避免人工操作可能產(chǎn)生的錯誤,使用統(tǒng)一的API接口通過鏈?zhǔn)秸{(diào)用完成操作,方便對不同數(shù)據(jù)庫的操作。
[0011]本發(fā)明的有益效果是:
本發(fā)明采用一種面向?qū)ο笾欣肙RM框架實(shí)現(xiàn)數(shù)據(jù)庫操作的方法和系統(tǒng),對所有的SQL語句進(jìn)行統(tǒng)一處理,使處理后所有的SQL語句通過設(shè)置的通用API接口即可實(shí)現(xiàn)調(diào)用,從而避免不同數(shù)據(jù)庫接口不同造成的訪問切換,使數(shù)據(jù)庫的訪問操作簡便化;通過ORM實(shí)體自動生成SQL腳本,生成的過程通過模板元和宏實(shí)現(xiàn),避免了重復(fù)而繁瑣拼寫SQL語句的麻煩,減少了人工拼寫的錯誤,提升了開發(fā)效率;調(diào)用時(shí)通過鏈?zhǔn)秸{(diào)用的方式對數(shù)據(jù)庫進(jìn)行操作,實(shí)現(xiàn)訪問方式的靈活性。本發(fā)明無論是對小型數(shù)據(jù)庫的操作或者是大型數(shù)據(jù)庫的操作,都使操作簡便化和自動化,有效提升了訪問的效率和正確率。
【專利附圖】
【附圖說明】
[0012]下面結(jié)合附圖和實(shí)例對本發(fā)明作進(jìn)一步說明。
[0013]圖1是本發(fā)明所述方法的流程圖;
圖2是自動生成SQL腳本的流程圖。
【具體實(shí)施方式】
[0014]在現(xiàn)有面向?qū)ο蠹夹g(shù)中,在訪問數(shù)據(jù)庫時(shí),因?yàn)樵L問接口不一致,需要頻繁更換接口,不同的數(shù)據(jù)庫,需要改變調(diào)用方式,人工拼寫SQL語句導(dǎo)致的錯誤頻頻,且需要記憶大量的調(diào)用語句,拼寫速度較慢。
[0015]對此,參照圖1所示的流程圖,本發(fā)明提供了一種面向?qū)ο笾欣肙RM框架實(shí)現(xiàn)數(shù)據(jù)庫操作的方法,通過ORM框架實(shí)現(xiàn)對數(shù)據(jù)庫的訪問,首先根據(jù)ORM框架和業(yè)務(wù)實(shí)體生成對數(shù)據(jù)庫進(jìn)行操作的調(diào)用命令,調(diào)用命令以鏈?zhǔn)秸{(diào)用的方式生成,如queryCD 0.where (…).0rderby (…),其中,T是業(yè)務(wù)實(shí)體,它和數(shù)據(jù)庫中的某個物理表是對應(yīng)的,二者字段個數(shù)和類型是一致的,不過存在形式不同,實(shí)體是在內(nèi)存中,物理表是在數(shù)據(jù)庫中,這個查詢命令是鏈?zhǔn)秸{(diào)用的,先orderby排序,然后再where限制條件,最后再query查詢結(jié)果。此時(shí)沒有生成sql腳本,只有幾個API接口,這幾個API組成了一個數(shù)據(jù)庫操作命令。
[0016]其次,ORM框架自動解析調(diào)用命令并生成對應(yīng)的SQL腳本。[0017]最后,通過API接口調(diào)用SQL腳本對數(shù)據(jù)庫進(jìn)行操作。
[0018]其中,本發(fā)明通過可變參數(shù)模板對所有的SQL語句進(jìn)行處理,可變參數(shù)模板可接收任意個數(shù)和類型的參數(shù),其可對SQL語句中參數(shù)個數(shù)和參數(shù)類型都是變化的情況做統(tǒng)一處理,使處理后所有的SQL語句具有統(tǒng)一的格式。而設(shè)置的API接口為通用的數(shù)據(jù)庫操作接口,其屏蔽了不同數(shù)據(jù)庫操作接口的差異,因此,此接口可被不同的數(shù)據(jù)庫所調(diào)用,且?guī)в薪y(tǒng)一格式的SQL語句可被統(tǒng)一設(shè)置的API接口所識別和接收。
[0019]參照圖2所示,當(dāng)需要訪問數(shù)據(jù)庫時(shí),ORM框架自動解析調(diào)用命令并生成對應(yīng)的SQL腳本,ORM (Object-RelationMapping,對象-關(guān)系映射),是一種為了解決面向?qū)ο笈c關(guān)系數(shù)據(jù)庫物理表和內(nèi)存對象相互轉(zhuǎn)換的技術(shù),ORM是通過描述對象和關(guān)系數(shù)據(jù)庫之間的映射,將程序中的對象自動持久化到關(guān)系數(shù)據(jù)庫中。自動生成SQL腳本通過模板元實(shí)現(xiàn),模板元結(jié)構(gòu)tuple是一個泛化的pair,或者說是一個通用的結(jié)構(gòu)體,它可以容納任意數(shù)量和任意類型的字段。ORM業(yè)務(wù)實(shí)體提供有函數(shù)將實(shí)體字段和字段值返回給模板元,模板元對實(shí)體字段數(shù)量、類型各不相同的的實(shí)體字段進(jìn)行統(tǒng)一解析,從而屏蔽實(shí)體字段數(shù)量、類型不同的差異,并生成對應(yīng)的結(jié)構(gòu)體字段,通過宏提取結(jié)構(gòu)體字段中的內(nèi)容,并根據(jù)字段內(nèi)容生成對應(yīng)的SQL腳本,其中,宏的內(nèi)容是結(jié)構(gòu)體字段,結(jié)構(gòu)體字段的書寫可以智能感知生成,從而有效避免書寫錯誤,而且也很方便的選擇需要的字段。
[0020]腳本生成后,通過API接口以鏈?zhǔn)秸{(diào)用的方式操作數(shù)據(jù)庫,由于API接口具有通用性,實(shí)現(xiàn)接口調(diào)用就比較方便,不需要對不同的數(shù)據(jù)庫進(jìn)行接口轉(zhuǎn)換,同時(shí),鏈?zhǔn)秸{(diào)用更接近自然語言,比如,通過實(shí)體查詢表結(jié)構(gòu)時(shí),可以連續(xù)調(diào)用多個函數(shù):query〈T>().where (…).0rderby (…)等,因此,可方便地通過鏈?zhǔn)秸{(diào)用通過SQL腳本操作數(shù)據(jù)庫。
[0021]本發(fā)明提供了 一種面向?qū)ο笾欣肙RM框架實(shí)現(xiàn)數(shù)據(jù)庫操作的系統(tǒng),包括:
第一裝置,根據(jù)ORM框架和業(yè)務(wù)實(shí)體生成對數(shù)據(jù)庫進(jìn)行操作的調(diào)用命令;
第二裝置,框架自動解析調(diào)用命令并生成對應(yīng)的SQL腳本;
第三裝置,通過API接口調(diào)用SQL腳本對數(shù)據(jù)庫進(jìn)行操作;
其中,所述API接口為通用的數(shù)據(jù)庫操作接口,其屏蔽了不同數(shù)據(jù)庫操作接口的差異,所述SQL腳本經(jīng)過統(tǒng)一處理后通過API接口進(jìn)行識別與接收。
[0022]所述ORM業(yè)務(wù)實(shí)體以鏈?zhǔn)秸{(diào)用的方式生成對數(shù)據(jù)庫進(jìn)行操作的調(diào)用命令。
[0023]所述SQL腳本通過可變參數(shù)模板對其中SQL語句的參數(shù)類型進(jìn)行統(tǒng)一處理,使處理后所有的SQL語句通過API接口進(jìn)行識別與接收。
[0024]ORM框架通過模板元結(jié)構(gòu)自動解析此調(diào)用命令并生成對應(yīng)的SQL腳本,其中,ORM框架將業(yè)務(wù)實(shí)體的實(shí)體字段和字段值返回給模板元結(jié)構(gòu)后,模板元結(jié)構(gòu)對類型不同、數(shù)量不同的實(shí)體字段進(jìn)行統(tǒng)一解析,生成結(jié)構(gòu)體字段,通過宏獲取結(jié)構(gòu)字段中的字段內(nèi)容,并根據(jù)字段內(nèi)容生成對應(yīng)的SQL腳本。
[0025]所述系統(tǒng)采用以上方法中所述的內(nèi)容,通過所述系統(tǒng)可完全實(shí)現(xiàn)以上方法中所述目的,具體參見方法中的內(nèi)容,在此不再贅述。
[0026]以上所述,只是本發(fā)明的較佳實(shí)施例而已,本發(fā)明并不局限于上述實(shí)施方式,只要其以相同的手段達(dá)到本發(fā)明的技術(shù)效果,都應(yīng)屬于本發(fā)明的保護(hù)范圍。
【權(quán)利要求】
1.一種面向?qū)ο笾欣肙RM框架實(shí)現(xiàn)數(shù)據(jù)庫操作的方法,其特征在于,包括: 根據(jù)ORM框架和業(yè)務(wù)實(shí)體生成對數(shù)據(jù)庫進(jìn)行操作的調(diào)用命令; ORM框架自動解析調(diào)用命令并生成對應(yīng)的SQL腳本; 通過API接口調(diào)用SQL腳本對數(shù)據(jù)庫進(jìn)行操作; 其中,所述API接口為通用的數(shù)據(jù)庫操作接口,其屏蔽了不同數(shù)據(jù)庫操作接口的差異,所述SQL腳本經(jīng)過統(tǒng)一處理后通過API接口進(jìn)行識別與接收。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述ORM框架和業(yè)務(wù)實(shí)體以鏈?zhǔn)秸{(diào)用的方式生成對數(shù)據(jù)庫進(jìn)行操作的調(diào)用命令。
3.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述SQL腳本通過可變參數(shù)模板對其中SQL語句的參數(shù)類型進(jìn)行統(tǒng)一處理,使處理后所有的SQL語句通過API接口進(jìn)行識別與接收。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,ORM框架通過模板元結(jié)構(gòu)自動解析此調(diào)用命令并生成對應(yīng)的SQL腳本,其中,ORM框架將業(yè)務(wù)實(shí)體的實(shí)體字段和字段值返回給模板元結(jié)構(gòu)后,模板元結(jié)構(gòu)對類型不同、數(shù)量不同的實(shí)體字段進(jìn)行統(tǒng)一解析,生成結(jié)構(gòu)體字段,通過宏獲取結(jié)構(gòu)字段中的字段內(nèi)容,并根據(jù)字段內(nèi)容生成對應(yīng)的SQL腳本。
5.一種面向?qū)ο笾欣肙RM框架實(shí)現(xiàn)數(shù)據(jù)庫操作的系統(tǒng),其特征在于,包括: 第一裝置,根據(jù)ORM框架和業(yè)務(wù)實(shí)體生成對數(shù)據(jù)庫進(jìn)行操作的調(diào)用命令; 第二裝置,框架自動解析調(diào)用命令并生成對應(yīng)的SQL腳本; 第三裝置,通過API接口調(diào)用SQL腳本對數(shù)據(jù)庫進(jìn)行操作; 其中,所述API接口為通用的數(shù)據(jù)庫操作接口,其屏蔽了不同數(shù)據(jù)庫操作接口的差異,所述SQL腳本經(jīng)過統(tǒng)一處理后通過API接口進(jìn)行識別與接收。
6.根據(jù)權(quán)利要求5所述的系統(tǒng),其特征在于,所述ORM框架和業(yè)務(wù)實(shí)體以鏈?zhǔn)秸{(diào)用的方式生成對數(shù)據(jù)庫進(jìn)行操作的調(diào)用命令。
7.根據(jù)權(quán)利要求5或6所述的系統(tǒng),其特征在于,所述SQL腳本通過可變參數(shù)模板對其中SQL語句的參數(shù)類型進(jìn)行統(tǒng)一處理,使處理后所有的SQL語句通過API接口進(jìn)行識別與接收。
8.根據(jù)權(quán)利要求7所述的系統(tǒng),其特征在于,ORM框架通過模板元結(jié)構(gòu)自動解析此調(diào)用命令并生成對應(yīng)的SQL腳本,其中,ORM框架將業(yè)務(wù)實(shí)體的實(shí)體字段和字段值返回給模板元結(jié)構(gòu)后,模板元結(jié)構(gòu)對類型不同、數(shù)量不同的實(shí)體字段進(jìn)行統(tǒng)一解析,生成結(jié)構(gòu)體字段,通過宏獲取結(jié)構(gòu)字段中的字段內(nèi)容,并根據(jù)字段內(nèi)容生成對應(yīng)的SQL腳本。
【文檔編號】G06F17/30GK103699620SQ201310702185
【公開日】2014年4月2日 申請日期:2013年12月19日 優(yōu)先權(quán)日:2013年12月19日
【發(fā)明者】祁宇, 裴大橋, 張品林, 喻大發(fā), 曹雪山 申請人:珠海世紀(jì)鼎利通信科技股份有限公司