專利名稱:一種基于jdbc的數(shù)據(jù)訪問(wèn)層構(gòu)建方法及裝置的制作方法
技術(shù)領(lǐng)域:
本申請(qǐng)涉及數(shù)據(jù)庫(kù)技術(shù),特別是涉及一種基于JDBC的數(shù)據(jù)訪問(wèn)層構(gòu)建方法及裝置。
背景技術(shù):
JDBC是一種用于執(zhí)行SQL語(yǔ)句的Java API可以為多種關(guān)系數(shù)據(jù)庫(kù)提供統(tǒng)一訪問(wèn), 它由一組用Java語(yǔ)言編寫的類和接口組成。JDBC提供了一種基準(zhǔn),據(jù)此可以構(gòu)建更高級(jí)的工具和接口,使數(shù)據(jù)庫(kù)開(kāi)發(fā)人員能夠編寫數(shù)據(jù)庫(kù)應(yīng)用程序。其中,JDBC為Java Data Base Connectivity,java數(shù)據(jù)庫(kù)連接;SQL 為 Mructured Query Language 結(jié)構(gòu)化查詢語(yǔ)言;API 為 ApplicationProgramming Interface,應(yīng)用程序編程接□。在使用JDBC進(jìn)行Java系統(tǒng)的數(shù)據(jù)訪問(wèn)層開(kāi)發(fā),對(duì)數(shù)據(jù)庫(kù)進(jìn)行訪問(wèn)和操作,并將數(shù)據(jù)庫(kù)操作結(jié)果(數(shù)據(jù)集、數(shù)據(jù)操作結(jié)果)以一定方式提供給系統(tǒng)服務(wù)對(duì)象的開(kāi)發(fā)過(guò)程中,雖然JDBC為開(kāi)發(fā)人員提供了一組標(biāo)準(zhǔn)的API,但是在實(shí)際操作中,不同的操作人員根據(jù)JDBC 對(duì)數(shù)據(jù)訪問(wèn)層進(jìn)行開(kāi)發(fā)時(shí),構(gòu)建數(shù)據(jù)訪問(wèn)層的數(shù)據(jù)庫(kù)接口的編程方式各不相同。由于編程方式的不同會(huì)導(dǎo)致數(shù)據(jù)訪問(wèn)層的程序結(jié)構(gòu)模式也各不相同,即使在同一程序模式下,不同的操作人員在對(duì)數(shù)據(jù)訪問(wèn)層進(jìn)行開(kāi)發(fā)、維護(hù)、管理時(shí),其編程方式也不盡相同,此時(shí)必將造成程序代碼量偏多并且代碼冗余,并且容易造成程序結(jié)構(gòu)混亂等問(wèn)題。同時(shí)在構(gòu)建數(shù)據(jù)訪問(wèn)層的數(shù)據(jù)庫(kù)接口的編程過(guò)程中,會(huì)為系統(tǒng)配置相關(guān)的控件和配置文件等,配置過(guò)程非常的繁瑣并且需手工執(zhí)行,因此在系統(tǒng)配置出現(xiàn)錯(cuò)誤時(shí),需要大量的系統(tǒng)調(diào)試和代碼檢查的工作。當(dāng)系統(tǒng)所用的關(guān)系數(shù)據(jù)庫(kù)發(fā)生變化時(shí),關(guān)系數(shù)據(jù)庫(kù)在文件配置、SQL語(yǔ)法、數(shù)據(jù)庫(kù)驅(qū)動(dòng)、數(shù)據(jù)庫(kù)系統(tǒng)環(huán)境需求等方面的差異,必將引起數(shù)據(jù)訪問(wèn)層框架進(jìn)行不可預(yù)期的變動(dòng)和修改。由于程序的框架不同,導(dǎo)致程序結(jié)構(gòu)混亂,因此在系統(tǒng)的可擴(kuò)展性和可移植性變得很差,使得在維護(hù)和管理方面會(huì)帶來(lái)極大的不便。
發(fā)明內(nèi)容
本申請(qǐng)?zhí)峁┝艘环N基于JDBC的數(shù)據(jù)訪問(wèn)框架構(gòu)建方法及裝置,以解決數(shù)據(jù)訪問(wèn)層開(kāi)發(fā)過(guò)程中程序架構(gòu)和編程方式各異,系統(tǒng)配置復(fù)雜的問(wèn)題。為解決上述問(wèn)題,本申請(qǐng)公開(kāi)了一種基于JDBC的數(shù)據(jù)訪問(wèn)層構(gòu)建方法,包括通過(guò)集成開(kāi)源組件并封裝自定義的功能構(gòu)件,生成基于JDBC的數(shù)據(jù)訪問(wèn)層框架生成組件,其中,所述生成組件中包括架構(gòu)組件和功能控件;根據(jù)所述架構(gòu)組件選擇程序架構(gòu),在所選的程序架構(gòu)下,選擇相應(yīng)的功能控件產(chǎn)生適用于該程序架構(gòu)的系統(tǒng)配置文件和源程序模板;由上述所選的程序架構(gòu)和該程序架構(gòu)的系統(tǒng)配置文件及源程序模板,通過(guò)相關(guān)的程序配置建構(gòu)數(shù)據(jù)訪問(wèn)層。優(yōu)選的,所述通過(guò)架構(gòu)開(kāi)源組件并封裝功能控件,生成基于JDBC的數(shù)據(jù)訪問(wèn)層框架生成組件,包括 將開(kāi)源組件集成為架構(gòu)組件,所述架構(gòu)組件包括JNDI架構(gòu)組件,和/或,Spring架構(gòu)組件;將自定義的功能構(gòu)件封裝為功能控件,所述功能控件包括數(shù)據(jù)訪問(wèn)管理控件和系統(tǒng)功能控制/調(diào)度控件;架構(gòu)組件和功能控件共同生成基于JDBC的數(shù)據(jù)訪問(wèn)層框架生成組件。優(yōu)選的,所述根據(jù)所述架構(gòu)組件選擇程序架構(gòu),包括選擇所述架構(gòu)組件中的JNDI架構(gòu)組件作為程序架構(gòu),或,選擇所述架構(gòu)組件中的 Spring架構(gòu)組件作為程序架構(gòu)。優(yōu)選的,所述在所選的程序架構(gòu)下,選擇相應(yīng)的功能控件產(chǎn)生適用于該程序架構(gòu)的系統(tǒng)配置文件和源程序模板,包括在所選的程序架構(gòu)下,選擇數(shù)據(jù)訪問(wèn)管理控件自動(dòng)生成所選程序架構(gòu)的系統(tǒng)配置文件和源程序模板,其中,所述數(shù)據(jù)訪問(wèn)管理控件包括簡(jiǎn)單的Java對(duì)象基類、數(shù)據(jù)訪問(wèn)對(duì)象類、系統(tǒng)功能輔助控件和對(duì)象/關(guān)系映射控件;選擇系統(tǒng)功能控制/調(diào)度控件組合數(shù)據(jù)訪問(wèn)管理控件中的各個(gè)控件,快速生成數(shù)據(jù)訪問(wèn)層框架及構(gòu)件,并提供自動(dòng)和手動(dòng)系統(tǒng)部署功能。優(yōu)選的,所述系統(tǒng)功能輔助控件創(chuàng)建XML文件集控件和生成源代碼/系統(tǒng)配置文件集控件;所述數(shù)據(jù)訪問(wèn)管理控件自動(dòng)生成所選程序架構(gòu)的系統(tǒng)配置文件和源程序模板,包括所述生成源代碼/系統(tǒng)配置文件集控件生成數(shù)據(jù)訪問(wèn)層框架中的源代碼模板和系統(tǒng)配置文件,其中所述源程序代碼模板中包含簡(jiǎn)單的Java對(duì)象類、數(shù)據(jù)訪問(wèn)接口和數(shù)據(jù)訪問(wèn)接口實(shí)現(xiàn)類。優(yōu)選的,所述對(duì)象/關(guān)系映射控件提取基于JDBC的相關(guān)數(shù)據(jù)庫(kù)表結(jié)構(gòu)信息,創(chuàng)建源程序代碼模板中的簡(jiǎn)單的Java對(duì)象和簡(jiǎn)單的Java對(duì)象邏輯功能,并實(shí)現(xiàn)簡(jiǎn)單的Java對(duì)象繼承基類的功能。優(yōu)選的,所述簡(jiǎn)單的Java對(duì)象繼承基類的功能,所述功能為判斷數(shù)據(jù)訪問(wèn)層框架中是否存在簡(jiǎn)單的Java對(duì)象,和是否存在與所述簡(jiǎn)單的Java對(duì)象相等的對(duì)象。優(yōu)選的,所述數(shù)據(jù)訪問(wèn)對(duì)象類提供數(shù)據(jù)庫(kù)訪問(wèn)功能,其中,在JNDI架構(gòu)中,所述數(shù)據(jù)訪問(wèn)對(duì)象類為獲取數(shù)據(jù)庫(kù)訪問(wèn)必要信息提供功能支撐, 抽取數(shù)據(jù)訪問(wèn)的共性,形成數(shù)據(jù)庫(kù)操作的公共方法;或,在Spring架構(gòu)中,所述數(shù)據(jù)訪問(wèn)對(duì)象類被以依賴注入的方式管理,以屬性文件的形式配置和讀入數(shù)據(jù)庫(kù)配置信息,并以統(tǒng)一的方式加載。優(yōu)選的,所述XML文件集控件提取基于JDBC的相關(guān)數(shù)據(jù)庫(kù)表結(jié)構(gòu)信息,自動(dòng)生成數(shù)據(jù)訪問(wèn)層框架中存儲(chǔ)SQL語(yǔ)句的XML文件。優(yōu)選的,應(yīng)用所述XML文件集控件完成XML文件中信息和簡(jiǎn)單的Java對(duì)象之間的映射。相應(yīng)的,本申請(qǐng)還公開(kāi)了一種基于JDBC的數(shù)據(jù)訪問(wèn)層構(gòu)建裝置,包括
生成組件模塊,用于通過(guò)集成開(kāi)源組件并封裝自定義的功能構(gòu)件,生成基于JDBC 的數(shù)據(jù)訪問(wèn)層框架生成組件,其中,所述生成組件中包括架構(gòu)組件和功能控件;選擇架構(gòu)及配置模塊,用于根據(jù)所述架構(gòu)組件選擇程序架構(gòu),在所選的程序架構(gòu)下,選擇相應(yīng)的功能控件產(chǎn)生適用于該程序架構(gòu)的系統(tǒng)配置文件和源程序模板;建構(gòu)數(shù)據(jù)訪問(wèn)層模塊,用于由上述所選的程序架構(gòu)和該程序架構(gòu)的系統(tǒng)配置文件及源程序模板,通過(guò)相關(guān)的程序配置建構(gòu)數(shù)據(jù)訪問(wèn)層。優(yōu)選的,所述生成組件模塊,包括集成開(kāi)源組件子模塊,用于將開(kāi)源組件集成為架構(gòu)組件,所述架構(gòu)組件包括JNDI 架構(gòu)組件,和/或,Spring架構(gòu)組件;封裝功能構(gòu)件模塊,用于將自定義的功能構(gòu)件封裝為功能控件,所述功能控件包括數(shù)據(jù)訪問(wèn)管理控件和系統(tǒng)功能控制/調(diào)度控件;生成組件子模塊,用于架構(gòu)組件和功能控件共同生成基于JDBC的數(shù)據(jù)訪問(wèn)層框架生成組件。優(yōu)選的,所述選擇架構(gòu)及配置模塊,包括選擇架構(gòu)子模塊,用于選擇所述架構(gòu)組件中的JNDI架構(gòu)組件作為程序架構(gòu),或, 選擇所述架構(gòu)組件中的Spring架構(gòu)組件作為程序架構(gòu)。優(yōu)選的,所述選擇架構(gòu)及配置模塊,還包括生成配置及模板子模塊,用于在所選的程序架構(gòu)下,選擇數(shù)據(jù)訪問(wèn)管理控件自動(dòng)生成所選程序架構(gòu)的系統(tǒng)配置文件和源程序模板,其中,所述數(shù)據(jù)訪問(wèn)管理控件包括簡(jiǎn)單的Java對(duì)象基類、數(shù)據(jù)訪問(wèn)對(duì)象類、系統(tǒng)功能輔助控件和對(duì)象/關(guān)系映射控件;組合控件子模塊,用于選擇系統(tǒng)功能控制/調(diào)度控件組合數(shù)據(jù)訪問(wèn)管理控件中的各個(gè)控件,快速生成數(shù)據(jù)訪問(wèn)層框架及構(gòu)件,并提供自動(dòng)和手動(dòng)系統(tǒng)部署功能。與現(xiàn)有技術(shù)相比,本申請(qǐng)包括以下優(yōu)點(diǎn)首先,本申請(qǐng)通過(guò)集成開(kāi)源組件并封裝自定義的功能構(gòu)件,生成基于JDBC的數(shù)據(jù)訪問(wèn)層框架生成組件,將開(kāi)發(fā)數(shù)據(jù)訪問(wèn)層過(guò)程中具有共性特點(diǎn)的組件和構(gòu)建封裝、集成到一起,其中,所述生成組件中包括架構(gòu)組件和功能控件。因此在開(kāi)發(fā)數(shù)據(jù)訪問(wèn)層時(shí)可以選擇根據(jù)所述架構(gòu)組件選擇程序架構(gòu),在所選的程序架構(gòu)下,選擇相應(yīng)的功能控件產(chǎn)生適用于該程序架構(gòu)的系統(tǒng)配置文件和源程序模板。由上述所選的程序架構(gòu)和該程序架構(gòu)的系統(tǒng)配置文件及源程序模板,通過(guò)配置相關(guān)的程序建構(gòu)數(shù)據(jù)訪問(wèn)層。在統(tǒng)一的源程序模板中,會(huì)按照一定的規(guī)則配置相關(guān)的程序,并且在程序調(diào)用配置文件時(shí),也可以有一定的規(guī)范。因此在開(kāi)發(fā)和后期的維護(hù)中都可以按照相關(guān)的規(guī)范配置,因此本申請(qǐng)所述的方法對(duì)數(shù)據(jù)層進(jìn)行開(kāi)發(fā)時(shí)程序結(jié)構(gòu)模式統(tǒng)一,開(kāi)發(fā)、維護(hù)和管理方便。本申請(qǐng)能夠快速生成架構(gòu)模式可定制的、 系統(tǒng)配置可簡(jiǎn)化的、程序結(jié)構(gòu)標(biāo)準(zhǔn)化的數(shù)據(jù)訪問(wèn)層框架及構(gòu)件的生成組件,從而降低系統(tǒng)開(kāi)發(fā)復(fù)雜度和時(shí)間,并且實(shí)現(xiàn)數(shù)據(jù)訪問(wèn)層開(kāi)發(fā)的統(tǒng)一和標(biāo)準(zhǔn)。其次,現(xiàn)有技術(shù)將數(shù)據(jù)庫(kù)SQL語(yǔ)句編寫于Java文件中,當(dāng)數(shù)據(jù)庫(kù)表信息發(fā)生變化或業(yè)務(wù)需求發(fā)生變化時(shí),需要在Java文件中修改相應(yīng)SQL語(yǔ)句,重新編譯系統(tǒng),降低了系統(tǒng)的可維護(hù)性。本申請(qǐng)將SQL語(yǔ)句與Java文件分離,通過(guò)XML文件集控件生成包含標(biāo)準(zhǔn)SQL 語(yǔ)句的XML文件集,便于對(duì)語(yǔ)句的修改,提高了系統(tǒng)的可維護(hù)性。再次,本申請(qǐng)可以選擇Spring架構(gòu)和JNDI架構(gòu)進(jìn)行數(shù)據(jù)訪問(wèn)層的開(kāi)發(fā),在對(duì)開(kāi)發(fā)過(guò)程進(jìn)行標(biāo)準(zhǔn)化的過(guò)程中提供更多的選擇,適用于各種開(kāi)發(fā)的需求,開(kāi)發(fā)方法靈活、可擴(kuò)展。
圖1是本申請(qǐng)實(shí)施例所述一種基于JDBC的數(shù)據(jù)訪問(wèn)層構(gòu)建方法流程圖;圖2是本申請(qǐng)實(shí)施例所述一種基于JDBC的數(shù)據(jù)訪問(wèn)層構(gòu)建方法構(gòu)建生成組件流程圖;圖3是本申請(qǐng)實(shí)施例所述一種基于JDBC的數(shù)據(jù)訪問(wèn)層構(gòu)建方法生成數(shù)據(jù)訪問(wèn)層框架流程圖;圖4是本申請(qǐng)實(shí)施例所述一種基于JDBC的數(shù)據(jù)訪問(wèn)層構(gòu)建方法示意圖;圖5是本申請(qǐng)實(shí)施例所述一種基于JDBC的數(shù)據(jù)訪問(wèn)層構(gòu)建方法組件功能實(shí)現(xiàn)原理圖;圖6是本申請(qǐng)優(yōu)選實(shí)施例所述一種基于JDBC的數(shù)據(jù)訪問(wèn)層構(gòu)建方法生成組件的架構(gòu)方法流程圖;圖7是本申請(qǐng)優(yōu)選實(shí)施例所述一種基于JDBC的數(shù)據(jù)訪問(wèn)層構(gòu)建方法生成組件生成數(shù)據(jù)訪問(wèn)層框架流程圖;圖8是本申請(qǐng)實(shí)施例所述一種基于JDBC的數(shù)據(jù)訪問(wèn)層構(gòu)建裝置結(jié)構(gòu)圖;圖9是本申請(qǐng)實(shí)施例所述一種基于JDBC的數(shù)據(jù)訪問(wèn)層構(gòu)建裝置中生成配置及模板子模塊結(jié)構(gòu)圖。
具體實(shí)施例方式為使本申請(qǐng)的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖和具體實(shí)施方式
對(duì)本申請(qǐng)作進(jìn)一步詳細(xì)的說(shuō)明?,F(xiàn)有技術(shù)在對(duì)數(shù)據(jù)訪問(wèn)層進(jìn)行開(kāi)發(fā)時(shí),雖然JDBC為開(kāi)發(fā)人員提供了一組標(biāo)準(zhǔn)的 API,但是在實(shí)際操作中,不同的操作人員構(gòu)建數(shù)據(jù)訪問(wèn)層的數(shù)據(jù)庫(kù)接口的編程方式各不相同。導(dǎo)致數(shù)據(jù)訪問(wèn)層的程序結(jié)構(gòu)模式也各不相同,即使在同一程序模式下,不同的操作人員在對(duì)數(shù)據(jù)訪問(wèn)層進(jìn)行維護(hù)、管理時(shí),也會(huì)使用不同的編程方式,此時(shí)必將造成程序代碼量偏多并且代碼冗余,并且容易造成程序結(jié)構(gòu)混亂等問(wèn)題。本申請(qǐng)針對(duì)當(dāng)前大多數(shù)系統(tǒng)在數(shù)據(jù)訪問(wèn)層開(kāi)發(fā)過(guò)程中存在的一些共性問(wèn)題,發(fā)明一種能夠快速生成架構(gòu)模式可定制的、系統(tǒng)配置可簡(jiǎn)化的、程序結(jié)構(gòu)標(biāo)準(zhǔn)化的數(shù)據(jù)訪問(wèn)層框架及構(gòu)件的生成組件,從而降低系統(tǒng)開(kāi)發(fā)復(fù)雜度和時(shí)間,并且實(shí)現(xiàn)數(shù)據(jù)訪問(wèn)層開(kāi)發(fā)的統(tǒng)一和標(biāo)準(zhǔn)。本申請(qǐng)通過(guò)集成開(kāi)源組件并封裝自定義的功能構(gòu)件,生成基于JDBC的數(shù)據(jù)訪問(wèn)層框架生成組件;根據(jù)生成組件中的架構(gòu)組件選擇程序架構(gòu),在所選的程序架構(gòu)下,選擇生成組件中相應(yīng)的功能控件產(chǎn)生適用于該程序架構(gòu)的系統(tǒng)配置文件和源程序模板構(gòu)建數(shù)據(jù)訪問(wèn)層框架基本內(nèi)容;再配置相應(yīng)的程序,建構(gòu)功能完整的數(shù)據(jù)訪問(wèn)層。在統(tǒng)一的源程序模板中,會(huì)按照一定的規(guī)則配置相關(guān)的程序,并且在程序調(diào)用配置文件時(shí),也可以有一定的規(guī)范。因此在開(kāi)發(fā)和后期的維護(hù)中都可以按照相關(guān)的規(guī)范配置,因此本申請(qǐng)所述的方法對(duì)數(shù)據(jù)層進(jìn)行開(kāi)發(fā)時(shí)程序結(jié)構(gòu)統(tǒng)一,開(kāi)發(fā)、維護(hù)和管理方便。
參照?qǐng)D1,給出了本申請(qǐng)實(shí)施例所述一種基于JDBC的數(shù)據(jù)訪問(wèn)層構(gòu)建方法流程圖。步驟11,通過(guò)集成開(kāi)源組件并封裝自定義的功能構(gòu)件,生成基于JDBC的數(shù)據(jù)訪問(wèn)層框架生成組件,其中,所述生成組件中包括架構(gòu)組件和功能控件;在對(duì)基于JDBC的數(shù)據(jù)訪問(wèn)層進(jìn)行開(kāi)發(fā)時(shí),存在一些組件、構(gòu)件具有共性的特點(diǎn), 因此可以通過(guò)集成開(kāi)源組件,封裝自定義的功能構(gòu)件,生成基于JDBC的數(shù)據(jù)訪問(wèn)層框架生成組件,其中,所述生成組件中包括架構(gòu)組件和功能控件。例如,在開(kāi)發(fā)數(shù)據(jù)訪問(wèn)層時(shí)程序架構(gòu)可以是Spring框架,在構(gòu)建Spring框架時(shí)會(huì)有一些程序包和配置文件等,這是具有共性特點(diǎn)的,因此可以將Spring框架的程序包和配置文件等組件進(jìn)行集成,此處是具體實(shí)施中的舉例不應(yīng)理解為是對(duì)本申請(qǐng)的限制。步驟12,根據(jù)所述架構(gòu)組件選擇程序架構(gòu),在所選的程序架構(gòu)下,選擇相應(yīng)的功能控件產(chǎn)生適用于該程序架構(gòu)的系統(tǒng)配置文件和源程序模板;首先根據(jù)架構(gòu)組件選擇開(kāi)發(fā)數(shù)據(jù)訪問(wèn)層的程序架構(gòu),在所選的程序架構(gòu)下,選擇相應(yīng)的功能控件,所述功能控件配置上相應(yīng)的數(shù)據(jù)等信息,產(chǎn)生適用于該程序架構(gòu)的系統(tǒng)配置文件和源程序模板。因此就可以構(gòu)成數(shù)據(jù)訪問(wèn)層框架。例如,上述選擇的是Spring框架,可以產(chǎn)生適用于Spring框架的配置文件,以及源程序模板。步驟13,由上述所選的程序架構(gòu)和該程序架構(gòu)的系統(tǒng)配置文件及源程序模板,通過(guò)相關(guān)的程序配置建構(gòu)數(shù)據(jù)訪問(wèn)層。上述步驟中確定了程序架構(gòu),和在該程序架構(gòu)下的系統(tǒng)配置文件及源程序模板, 可以手動(dòng)或自動(dòng)的給源程序模板配置相關(guān)的程序,還可以根據(jù)代碼對(duì)系統(tǒng)配置文件進(jìn)行相關(guān)的配置等,在所述數(shù)據(jù)訪問(wèn)層框架下進(jìn)一步建構(gòu)數(shù)據(jù)訪問(wèn)層。例如,在統(tǒng)一的源程序模板中,會(huì)按照一定的規(guī)則配置相關(guān)的代碼,并且在程序調(diào)用配置文件時(shí),也可以有一定的規(guī)范。因此在開(kāi)發(fā)和后期的維護(hù)中都可以按照相關(guān)的規(guī)范配置。綜上所述,本申請(qǐng)通過(guò)集成開(kāi)源組件并封裝自定義的功能構(gòu)件,生成基于JDBC的數(shù)據(jù)訪問(wèn)層框架生成組件,將開(kāi)發(fā)數(shù)據(jù)訪問(wèn)層過(guò)程中具有共性特點(diǎn)的組件和構(gòu)建封裝、集成到一起,其中,所述生成組件中包括架構(gòu)組件和功能控件。因此在開(kāi)發(fā)數(shù)據(jù)訪問(wèn)層時(shí)可以選擇根據(jù)所述架構(gòu)組件選擇程序架構(gòu),在所選的程序架構(gòu)下,選擇相應(yīng)的功能控件產(chǎn)生適用于該程序架構(gòu)的系統(tǒng)配置文件和源程序模板。由上述所選的程序架構(gòu)和該程序架構(gòu)的系統(tǒng)配置文件及源程序模板,通過(guò)配置相關(guān)的程序建構(gòu)數(shù)據(jù)訪問(wèn)層。在統(tǒng)一的源程序模板中, 會(huì)按照一定的規(guī)則配置相關(guān)的代碼,并且在程序調(diào)用配置文件時(shí),也可以有一定的規(guī)范。因此在開(kāi)發(fā)和后期的維護(hù)中都可以按照相關(guān)的規(guī)范配置,因此本申請(qǐng)所述的方法對(duì)數(shù)據(jù)層進(jìn)行開(kāi)發(fā)時(shí)程序結(jié)構(gòu)統(tǒng)一,開(kāi)發(fā)、維護(hù)和管理方便。本申請(qǐng)能夠快速生成架構(gòu)模式可定制的、 系統(tǒng)配置可簡(jiǎn)化的、程序結(jié)構(gòu)標(biāo)準(zhǔn)化的數(shù)據(jù)訪問(wèn)層框架及構(gòu)件的生成組件,從而降低系統(tǒng)開(kāi)發(fā)復(fù)雜度和時(shí)間,并且實(shí)現(xiàn)數(shù)據(jù)訪問(wèn)層開(kāi)發(fā)的統(tǒng)一和標(biāo)準(zhǔn)參照?qǐng)D2,給出了本申請(qǐng)實(shí)施例所述一種基于JDBC的數(shù)據(jù)訪問(wèn)層構(gòu)建方法構(gòu)建生成組件流程圖。具體的,上述步驟11,通過(guò)架構(gòu)開(kāi)源組件并封裝功能控件,生成基于JDBC的數(shù)據(jù)訪問(wèn)層框架生成組件,包括步驟111,將開(kāi)源組件集成為架構(gòu)組件,所述架構(gòu)組件包括JNDI架構(gòu)組件,和/或, Spring架構(gòu)組件;例如,將JNDI架構(gòu)的程序包和應(yīng)用程序編程結(jié)果口封裝類這些開(kāi)源組件進(jìn)行集成,生成JNDI架構(gòu);將Spring架構(gòu)程序包和組件配置文件等開(kāi)源組件進(jìn)行集成,生成 Spring架構(gòu)。當(dāng)然,還可以集成其他架構(gòu)的開(kāi)源組件,本申請(qǐng)對(duì)此不做限定。因此將開(kāi)源組件集成為架構(gòu)組件,所述架構(gòu)組件可以包括JNDI架構(gòu)組件和 Spring架構(gòu)組件;也可以僅為JNDI架構(gòu)組件,或僅為Spring架構(gòu)組件,本申請(qǐng)對(duì)此不做限定。步驟112,將自定義的功能構(gòu)件封裝為功能控件,所述功能控件包括數(shù)據(jù)訪問(wèn)管理控件和系統(tǒng)功能控制/調(diào)度控件;在對(duì)數(shù)據(jù)訪問(wèn)層進(jìn)行開(kāi)發(fā)時(shí),各種功能后會(huì)有相應(yīng)的構(gòu)件執(zhí)行完成,因此可以自定義相應(yīng)的功能構(gòu)件,將這些自定義的功能構(gòu)件進(jìn)行封裝后作為功能控件,所述功能控件可以包括數(shù)據(jù)訪問(wèn)管理控件和系統(tǒng)功能控制/調(diào)度控件。步驟113,由所述架構(gòu)組件和功能控件共同生成基于JDBC的數(shù)據(jù)訪問(wèn)層框架生成組件。其中,JNDI (Java Naming and Directory Interface, Java 命名禾口目錄接口)是一組在Java應(yīng)用中訪問(wèn)命名和目錄服務(wù)的API。命名服務(wù)將名稱和對(duì)象聯(lián)系起來(lái),使得我們可以用名稱訪問(wèn)對(duì)象JNDI提供了一種統(tǒng)一的方式,可以用在網(wǎng)絡(luò)的查找和訪問(wèn)服務(wù)。 通過(guò)指定一個(gè)資源名稱,該名稱對(duì)應(yīng)于數(shù)據(jù)庫(kù)或命名服務(wù)中的一個(gè)記錄,同時(shí)返回?cái)?shù)據(jù)庫(kù)連接建立所必須的信息。JNDI架構(gòu)提供了一組標(biāo)準(zhǔn)的獨(dú)立于命名系統(tǒng)的API,這些API構(gòu)建在與命名系統(tǒng)有關(guān)的驅(qū)動(dòng)之上,因此JNDI獨(dú)立于目錄服務(wù)的具體實(shí)現(xiàn),只要有目錄的服務(wù)提供接口(或驅(qū)動(dòng)),就可以使用目錄。Spring架構(gòu)(Spring框架)Spring是一個(gè)輕量級(jí)的控制反轉(zhuǎn)(IoC,Inversion of Control)的容器框架,具有方便解耦、簡(jiǎn)化開(kāi)發(fā),聲明式的事務(wù)管理,在應(yīng)用服務(wù)器之間可移植等特點(diǎn)。Spring可以將簡(jiǎn)單的組件配置、組合成為復(fù)雜的應(yīng)用。在Spring中,應(yīng)用對(duì)象被聲明式地組合,典型地是在一個(gè)XML文件里。Spring也提供了很多基礎(chǔ)功能(事務(wù)管理、持久化框架集成等等),將應(yīng)用邏輯的開(kāi)發(fā)留給了開(kāi)發(fā)人員。參照?qǐng)D3,給出了本申請(qǐng)實(shí)施例所述一種基于JDBC的數(shù)據(jù)訪問(wèn)層構(gòu)建方法生成數(shù)據(jù)訪問(wèn)層框架流程圖。具體的,上述步驟12中,所述根據(jù)所述架構(gòu)組件選擇程序架構(gòu),包括步驟121,選擇所述架構(gòu)組件中的JNDI架構(gòu)組件作為程序架構(gòu),或,選擇所述架構(gòu)組件中的Spring架構(gòu)組件作為程序架構(gòu)。上述架構(gòu)組件可以包括JNDI架構(gòu)組件,和/或,Spring架構(gòu)組件,因此可以選擇 JNDI架構(gòu)組件作為程序架構(gòu),或,選擇Spring架構(gòu)組件作為程序架構(gòu)。具體的,上述步驟12中,所述在所選的程序架構(gòu)下,選擇相應(yīng)的功能控件產(chǎn)生適用于該程序架構(gòu)的系統(tǒng)配置文件和源程序模板,包括步驟122,在所選的程序架構(gòu)下,選擇數(shù)據(jù)訪問(wèn)管理控件生成所選程序架構(gòu)的系統(tǒng)配置文件和源程序模板,其中,所述數(shù)據(jù)訪問(wèn)管理控件包括簡(jiǎn)單的Java對(duì)象基類、數(shù)據(jù)訪問(wèn)對(duì)象類、系統(tǒng)功能輔助控件和對(duì)象/關(guān)系映射控件;上述功能控件可以包括數(shù)據(jù)訪問(wèn)管理控件和系統(tǒng)功能控制/調(diào)度控件作為功能控件,其中,所述數(shù)據(jù)訪問(wèn)管理控件包括簡(jiǎn)單的Java對(duì)象基類、數(shù)據(jù)訪問(wèn)對(duì)象類、系統(tǒng)功能輔助控件和對(duì)象/關(guān)系映射控件。在所選的程序架構(gòu)下,可以選擇數(shù)據(jù)訪問(wèn)管理控件,數(shù)據(jù)訪問(wèn)管理控件中各個(gè)不同功能的控件配置相應(yīng)的數(shù)據(jù)信息,可以生成所選程序架構(gòu)的系統(tǒng)配置文件和源程序模板。步驟123,選擇系統(tǒng)功能控制/調(diào)度控件組合數(shù)據(jù)訪問(wèn)管理控件中的各個(gè)控件,快速生成數(shù)據(jù)訪問(wèn)層框架及構(gòu)件,并提供自動(dòng)和手動(dòng)系統(tǒng)部署功能。具體實(shí)施中,可以通過(guò)基于AWT(Abstract Windowing ^Toolkit,抽象窗口工具包) 創(chuàng)建用戶交互界面,在系統(tǒng)功能控制及調(diào)度控件的控制和調(diào)度下,有機(jī)組合各控件,快速生成數(shù)據(jù)訪問(wèn)層框架及構(gòu)件,并提供自動(dòng)和手動(dòng)系統(tǒng)部署功能。上述數(shù)據(jù)訪問(wèn)管理控件中包含很多不同功能的控件,系統(tǒng)功能控制/調(diào)度控件可以組合上述各種不同功能的控件,快速生成數(shù)據(jù)訪問(wèn)層框架及相關(guān)的各種構(gòu)件,并提供自動(dòng)和手動(dòng)系統(tǒng)部署功能。其中,系統(tǒng)部署功能是根據(jù)生成組件部署的方式,對(duì)數(shù)據(jù)訪問(wèn)層的源代碼模板和相關(guān)的配置文件等內(nèi)容,手動(dòng)或自動(dòng)的加載到實(shí)際工程規(guī)定的目錄中。下面,給出本申請(qǐng)與功能控件有關(guān)的英文縮寫對(duì)應(yīng)英文全拼、中文名稱和簡(jiǎn)要介紹,其它未在本處列出的英文縮寫,詳見(jiàn)說(shuō)明書中其他部分。POJO (Plain Old Java Objects)簡(jiǎn)單的 Java 對(duì)象,實(shí)際就是普通 JavaBean,是為了避免和EJB混淆所創(chuàng)造的簡(jiǎn)稱。VO (value object)值對(duì)象,通常用于業(yè)務(wù)層之間的數(shù)據(jù)傳遞,和PO—樣也是僅僅包含數(shù)據(jù)而已。DAO (Data Access Object)數(shù)據(jù)訪問(wèn)接口,是一種應(yīng)用程序編程接口(API)。XML (Extensible Markup Language)可擴(kuò)展標(biāo)記語(yǔ)言,用于標(biāo)記電子文件使其具有結(jié)構(gòu)性的標(biāo)記語(yǔ)言,可以用來(lái)標(biāo)記數(shù)據(jù)、定義數(shù)據(jù)類型,是一種允許用戶對(duì)自己的標(biāo)記語(yǔ)言進(jìn)行定義的源語(yǔ)言。本申請(qǐng)通過(guò)數(shù)據(jù)訪問(wèn)層框架生成組件快速生成數(shù)據(jù)訪問(wèn)層框架,再配置相應(yīng)的代碼等生成數(shù)據(jù)訪問(wèn)層。參照?qǐng)D4,給出了本申請(qǐng)實(shí)施例所述一種基于JDBC的數(shù)據(jù)訪問(wèn)層構(gòu)建方法示意圖。具體的,通過(guò)數(shù)據(jù)庫(kù)訪問(wèn)相關(guān)的架構(gòu)組件、數(shù)據(jù)訪問(wèn)管理控件及系統(tǒng)控制/調(diào)度控件生成數(shù)據(jù)訪問(wèn)層框架及構(gòu)件。其中,數(shù)據(jù)訪問(wèn)管理控件包括P0J0(簡(jiǎn)單的Java對(duì)象) 基類、DA0(數(shù)據(jù)訪問(wèn)對(duì)象)、系統(tǒng)功能輔助控件、對(duì)象/關(guān)系映射控件和生成源代碼/系統(tǒng)配置文件集控件;構(gòu)架組件集成Spring架構(gòu)和封裝JNDI組件。 數(shù)據(jù)訪問(wèn)層框架包括自動(dòng)生成的目標(biāo)構(gòu)件包含標(biāo)識(shí)SQL語(yǔ)句的XML配置文件集、 系統(tǒng)模塊信息配置文件集、數(shù)據(jù)庫(kù)訪問(wèn)層的源程序模板代碼、JNDI架構(gòu)程序包及應(yīng)用程序編程接口封裝類和Spring架構(gòu)程序包及組件配置文件。 其中,所述系統(tǒng)模塊信息配置文件集包括數(shù)據(jù)庫(kù)連接配置文件、JNDI目錄服務(wù)
10命名配置文件、系統(tǒng)模塊的Spring依賴注入功能相關(guān)配置文件等。所述源程序模板代碼包含P0J0類、DAO接口、DAO接口實(shí)現(xiàn)類和相關(guān)的功能支持類。參照?qǐng)D5,給出了本申請(qǐng)實(shí)施例所述一種基于JDBC的數(shù)據(jù)訪問(wèn)層構(gòu)建方法組件功能實(shí)現(xiàn)原理圖。其中圖中數(shù)字分別代表1、POJO繼承VO基類的功能;2、DaoImpl實(shí)現(xiàn)Dao接口的方法;3、DaoImpl調(diào)用POJO ;4、DaoImpl調(diào)用SqlManager類,實(shí)現(xiàn)sql語(yǔ)句的管理;5、 DaoImpl 類繼承 JNDI 架構(gòu)(JNDI Frameffork)的 AbstractDao 抽象類;6、AbstractDao 抽象類調(diào)用CustomRowProcessor中產(chǎn)生POJO對(duì)象和POJO對(duì)象集合的方法;7、AbstractDao 抽象類調(diào)用hitializeCormectionPool類,實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)連接池的初始化功能;8、 InitializeConnectionPool 類實(shí)現(xiàn) InitialContext 接口 ;9、DaoImpl 類調(diào)用適用于 Spring 架構(gòu)(Spring Frameffork)白勺 BaseJdbcDao 類;10、BaseJdbcDao 類被 Spring 架構(gòu)以依賴注入的方式管理;11、JdbcTemplate 繼承 JdbcDaoSupport ; 12、InitialContext 類 Context實(shí)現(xiàn)接口。圖中+代表共有方法,可被其他對(duì)象調(diào)用;-代表獨(dú)有方法,不能被其他對(duì)象調(diào)用。 例如,在 DaoImpl 調(diào)用 SqlManager 類,可以調(diào)用其中的 createXML、IoadSqlFile 和 getSql 方法,實(shí)現(xiàn)sql語(yǔ)句的管理。其中,JdbcTemplate為JDBC實(shí)例JdbcDaoSupport為JDBC數(shù)據(jù)訪問(wèn)接口功能支持;Spring Core為Spring架構(gòu)核心;Bean Container為定義、創(chuàng)建和解析JavaBean對(duì)象的容器;supporting utilities為Spring Core提供的反向控制和依賴注入等基礎(chǔ)支撐功能;lookup為JNDI提供的尋找目錄訪問(wèn)的方法;applicationContext. xml為Spring架構(gòu)的配置文件。所述生成組件集成了 Spring的核心容器和Spring數(shù)據(jù)訪問(wèn)接口功能支持,封裝了 JNDI的訪問(wèn)命名服務(wù)功能;以接口的程序模式產(chǎn)生系統(tǒng)數(shù)據(jù)訪問(wèn)層功能的源代碼; DaoImpl類是DAO接口的實(shí)現(xiàn)。下面具體論述應(yīng)用生成組件中的功能控件生成數(shù)據(jù)訪問(wèn)層框架的過(guò)程。優(yōu)選的,所述系統(tǒng)功能輔助控件創(chuàng)建XML文件集控件和生成源代碼/系統(tǒng)配置文件集控件;進(jìn)一步,所述數(shù)據(jù)訪問(wèn)管理控件自動(dòng)生成所選程序架構(gòu)的系統(tǒng)配置文件和源程序模板,包括所述生成源代碼/系統(tǒng)配置文件集控件生成數(shù)據(jù)訪問(wèn)層框架中的源代碼模板和系統(tǒng)配置文件,其中所述源程序代碼模板中包含簡(jiǎn)單的Java對(duì)象類、數(shù)據(jù)訪問(wèn)接口和數(shù)據(jù)訪問(wèn)接口實(shí)現(xiàn)類。所述生成源代碼/系統(tǒng)配置文件集控件,可以應(yīng)用Java編程的方式生成數(shù)據(jù)訪問(wèn)層接口模式的源代碼模板和相關(guān)的系統(tǒng)配置文件。應(yīng)用Daolmpl類實(shí)現(xiàn)Dao接口的方法包括getObject (獲得Pojo對(duì)象)、getOb jectList (獲得Pojo對(duì)象集合)、add (添加對(duì)象方法)、edit (編輯對(duì)象方法)、delete (刪除對(duì)象方法)等,在Spring架構(gòu)下,DaoImpl調(diào)用 BaseJdbcDao類,以依賴注入的方式管理。其中,所述源程序代碼模板中包含簡(jiǎn)單的Java對(duì)象類、數(shù)據(jù)訪問(wèn)接口和數(shù)據(jù)訪問(wèn)接口實(shí)現(xiàn)類和相關(guān)的功能支持類。優(yōu)選的,所述對(duì)象/關(guān)系映射控件提取基于JDBC的相關(guān)數(shù)據(jù)庫(kù)表結(jié)構(gòu)信息,創(chuàng)建源程序代碼模板中的簡(jiǎn)單的Java對(duì)象和簡(jiǎn)單的Java對(duì)象邏輯功能,并實(shí)現(xiàn)簡(jiǎn)單的Java對(duì)象繼承值對(duì)象基類的功能。其中,對(duì)象/關(guān)系映射控件定義了 CustomRowProcessor類,主要定義了三個(gè)類方法,createBean、toBean 禾口 toBeanList。createBean 負(fù)責(zé)創(chuàng)建 POJO, toBean 負(fù)責(zé)數(shù)據(jù)庫(kù)關(guān)系映射為P0J0對(duì)象,toBeanList負(fù)責(zé)數(shù)據(jù)庫(kù)關(guān)系映射為P0J0對(duì)象集合。優(yōu)選的,所述實(shí)現(xiàn)簡(jiǎn)單的Java對(duì)象繼承基類的功能,還包括所述簡(jiǎn)單的Java對(duì)象繼承值對(duì)象基類的功能,所述功能為判斷數(shù)據(jù)訪問(wèn)層框架中是否存在簡(jiǎn)單的Java對(duì)象,和是否存在與所述簡(jiǎn)單的Java對(duì)象相等的對(duì)象。其中,basic attributes為基本屬性。VO基類是一個(gè)可序列化,即簡(jiǎn)單的Java對(duì)象實(shí)接口,能夠以一連串的字節(jié)描述的過(guò)程。其方法可被子類繼承的JavaBean,實(shí)現(xiàn)一種具有共性的功能,equal 即判斷P0J0對(duì)象是否和另一個(gè)對(duì)象相等,或hascode判斷P0J0對(duì)象是否具有本對(duì)象的實(shí)例,所述功能可被P0J0繼承。其中,序列化時(shí)將對(duì)象的狀態(tài)信息轉(zhuǎn)換為可以存儲(chǔ)或傳輸?shù)男问降倪^(guò)程。在數(shù)據(jù)訪問(wèn)層的開(kāi)發(fā)過(guò)程中,通過(guò)創(chuàng)建一個(gè)可序列化,其方法可被P0J0繼承的 JavaBean式的VO基類,實(shí)現(xiàn)判斷P0J0對(duì)象之間是相等或判斷是否具有本對(duì)象實(shí)例的功能。 其中,實(shí)例(instance)和對(duì)象(object)的區(qū)別為對(duì)象就是類的實(shí)例,所有的對(duì)象都是實(shí)例,但并不是所有的實(shí)例都是對(duì)象。 優(yōu)選的,所述數(shù)據(jù)訪問(wèn)對(duì)象類提供數(shù)據(jù)庫(kù)訪問(wèn)功能,其中,在JNDI架構(gòu)中,所述數(shù)據(jù)訪問(wèn)對(duì)象類為獲取數(shù)據(jù)庫(kù)訪問(wèn)必要信息提供功能支撐, 抽取數(shù)據(jù)訪問(wèn)的共性,形成數(shù)據(jù)庫(kù)操作的公共方法;或,在Spring架構(gòu)中,所述數(shù)據(jù)訪問(wèn)對(duì)象類被以依賴注入的方式管理,以穩(wěn)健的形式配置和讀入數(shù)據(jù)庫(kù)配置信息,并以統(tǒng)一的方式加載。DaoImpl類的實(shí)現(xiàn)方式有兩種實(shí)現(xiàn)方式,即繼承適應(yīng)于JNDI架構(gòu)的AbstractDao 抽象類和調(diào)用適用于Spring架構(gòu)的BaseJdbcDao類。引入JNDI程序包,AbstractDao抽象類調(diào)用封裝JNDI Javax. naming包的訪問(wèn)命名服務(wù) Context 接口和接口實(shí)現(xiàn)類 hitialContext 的 hitializeConnectionPool 類,為獲取數(shù)據(jù)庫(kù)訪問(wèn)必要信息提供功能支撐,并抽取數(shù)據(jù)訪問(wèn)的共性,形成數(shù)據(jù)庫(kù)操作的公共方法,比如getBean (獲取Java對(duì)象),getBeanList (獲取Java對(duì)象集合)、update (添加、 修改和刪除數(shù)據(jù)操作)等方法予以子類繼承。引入Spring架構(gòu)程序包,BaseJdbcDao類包含較豐富的數(shù)據(jù)庫(kù)訪問(wèn)及操作方法, 被Spring架構(gòu)以依賴注入的方式管理,在Spring架構(gòu)中,數(shù)據(jù)源信息以屬性文件的形式進(jìn)行配置并讀入,以統(tǒng)一的方式加載?,F(xiàn)有技術(shù)將數(shù)據(jù)庫(kù)SQL語(yǔ)句編寫于Java文件中,當(dāng)數(shù)據(jù)庫(kù)表信息發(fā)生變化或業(yè)務(wù)需求發(fā)生變化時(shí),需要在Java文件中修改相應(yīng)SQL語(yǔ)句,重新編譯系統(tǒng),降低了系統(tǒng)的可維護(hù)性。
為解決上述問(wèn)題,本申請(qǐng)將SQL語(yǔ)句與Java文件分離,并以一種確定的方式實(shí)現(xiàn) SQL語(yǔ)句信息在計(jì)算機(jī)內(nèi)存中的統(tǒng)一預(yù)加載,具體過(guò)程如下。優(yōu)選的,所述XML文件集控件提取基于JDBC的相關(guān)數(shù)據(jù)庫(kù)表結(jié)構(gòu)信息,自動(dòng)生成數(shù)據(jù)訪問(wèn)層框架中存儲(chǔ)SQL語(yǔ)句的XML文件。優(yōu)選的,應(yīng)用所述XML文件集控件完成XML文件中信息和簡(jiǎn)單的Java對(duì)象之間的映射。包含標(biāo)識(shí)SQL語(yǔ)句的XML文件集控件主類SqlManager負(fù)責(zé)創(chuàng)建系統(tǒng)模塊標(biāo)準(zhǔn)SQL 語(yǔ)句XML文件(由createXML方法實(shí)現(xiàn)),在系統(tǒng)啟動(dòng)時(shí),在計(jì)算機(jī)內(nèi)存中預(yù)加載所有系統(tǒng)模塊SQL語(yǔ)句的XML文件中的SQL信息(由IoadSqlFiIe方法實(shí)現(xiàn)),并提供讀取SQL信息功能(由getSql方法實(shí)現(xiàn))。針對(duì)SQL信息表現(xiàn)方式及SQL語(yǔ)句預(yù)加載的技術(shù)問(wèn)題,通過(guò)如下的技術(shù)手段加以解決1.通過(guò)XML的Xml Schema文檔模式技術(shù)對(duì)系統(tǒng)業(yè)務(wù)模塊的SQL語(yǔ)句進(jìn)行邏輯結(jié)構(gòu)上的定義,不同的業(yè)務(wù)模塊SQL信息可以定義到不同的XML文件中;2.自定義包含標(biāo)識(shí)SQL語(yǔ)句的XML文件集控件,控件利用JDOM (基于Java的XML 文檔對(duì)象模型)技術(shù),通過(guò)基于JDBC的數(shù)據(jù)庫(kù)編程方式提取到的相關(guān)數(shù)據(jù)庫(kù)表結(jié)構(gòu)信息, 自動(dòng)生成包含符合mlschema邏輯結(jié)構(gòu)的、具有基本增、刪、改、查功能的SQL語(yǔ)句信息的 XML文件;3.在包含標(biāo)識(shí)SQL語(yǔ)句的XML文件集控件中,利用Digester (通過(guò)文件和對(duì)象映射的方式,處理XML文件的組件)技術(shù),負(fù)責(zé)XML文件信息到Java對(duì)象實(shí)例的轉(zhuǎn)化,通過(guò) Java的靜態(tài)化技術(shù)保證java對(duì)象在Web系統(tǒng)生命周期內(nèi)的全局性。4.在Web系統(tǒng)啟動(dòng)時(shí),通過(guò)Java的監(jiān)聽(tīng)技術(shù)調(diào)用包含標(biāo)識(shí)SQL語(yǔ)句的XML文件集控件,集中處理SQL語(yǔ)句的XML文件到Java對(duì)象的實(shí)例化并全局靜態(tài)化SQL信息,在計(jì)算機(jī)內(nèi)存中加載SQL信息,并提供讀取SQL信息功能。上述各控件并不是獨(dú)立運(yùn)行的,是互相之間共同作用產(chǎn)生數(shù)據(jù)訪問(wèn)層框架。綜上所述,本申請(qǐng)將SQL語(yǔ)句與Java文件分離,通過(guò)XML文件集控件生成包含標(biāo)準(zhǔn)SQL語(yǔ)句的XML文件,便于對(duì)語(yǔ)句的修改,提高了系統(tǒng)的可維護(hù)性。其次,本申請(qǐng)可以選擇Spring架構(gòu)和JNDI架構(gòu)進(jìn)行數(shù)據(jù)訪問(wèn)層的開(kāi)發(fā),在對(duì)開(kāi)發(fā)過(guò)程進(jìn)行標(biāo)準(zhǔn)化的過(guò)程中提供更多的選擇,適用于各種開(kāi)發(fā)的需求,開(kāi)發(fā)方法靈活、可擴(kuò)展。參照?qǐng)D6,給出了本申請(qǐng)優(yōu)選實(shí)施例所述一種基于JDBC的數(shù)據(jù)訪問(wèn)層構(gòu)建方法生成組件的架構(gòu)方法流程圖。具體實(shí)施時(shí),可以首先創(chuàng)建組件架構(gòu)體系結(jié)構(gòu),生成POJO基類,所述POJO基類繼承VO基類的功能。其次創(chuàng)建對(duì)象/關(guān)系映射控件,可以封裝JNDI架構(gòu),生成DAO基類實(shí)現(xiàn) AbstractDao,并且可以集成Spring架構(gòu),生成DAO基類BaseJdbcDao。再創(chuàng)建系統(tǒng)功能輔助控件,可以創(chuàng)建XML文件集控件,并且可以創(chuàng)建生成源代碼/系統(tǒng)配置文件集控件。實(shí)際中創(chuàng)建控件的先后順序是平行的,上述給出了創(chuàng)建所述各控件的一種順序,此處不應(yīng)理解為是對(duì)本申請(qǐng)的限定。上述控件創(chuàng)建完畢后,再創(chuàng)建系統(tǒng)功能控制/調(diào)度控件,最后可以創(chuàng)建生成組件UI (User hterface,用戶交互界面)。
參照?qǐng)D7,給出了本申請(qǐng)優(yōu)選實(shí)施例所述一種基于JDBC的數(shù)據(jù)訪問(wèn)層構(gòu)建方法生成組件生成數(shù)據(jù)訪問(wèn)層框架流程圖。首先啟動(dòng)生成組件UI,選擇架構(gòu)組件,可以選擇Spring架構(gòu),也可以選擇JNDI架構(gòu)。然后配置數(shù)據(jù)連接信息及選擇生成模塊對(duì)應(yīng)的表,其中可批量選擇表信息,也就是配置連接數(shù)據(jù)庫(kù)的相關(guān)信息和數(shù)據(jù)。再確定代碼包結(jié)構(gòu),生成源代碼模板以相關(guān)的配置文件,最后整合源代碼及系統(tǒng)配置文件、標(biāo)準(zhǔn)SQL語(yǔ)句的XML文件。參照?qǐng)D8,給出了本申請(qǐng)實(shí)施例所述一種基于JDBC的數(shù)據(jù)訪問(wèn)層構(gòu)建裝置結(jié)構(gòu)圖。相應(yīng)的,本申請(qǐng)還提供了一種基于JDBC的數(shù)據(jù)訪問(wèn)框架構(gòu)建裝置,包括生成組件模塊11、選擇架構(gòu)及配置模塊12和建構(gòu)數(shù)據(jù)訪問(wèn)層模塊13,其中生成組件模塊11,用于通過(guò)集成開(kāi)源組件并封裝自定義的功能構(gòu)件,生成基于 JDBC的數(shù)據(jù)訪問(wèn)層框架生成組件,其中,所述生成組件中包括架構(gòu)組件和功能控件;選擇架構(gòu)及配置模塊12,用于根據(jù)所述架構(gòu)組件選擇程序架構(gòu),在所選的程序架構(gòu)下,選擇相應(yīng)的功能控件產(chǎn)生適用于該程序架構(gòu)的系統(tǒng)配置文件和源程序模板;建構(gòu)數(shù)據(jù)訪問(wèn)層模塊13,用于由上述所選的程序架構(gòu)和該程序架構(gòu)的系統(tǒng)配置文件及源程序模板,通過(guò)配置相關(guān)的程序建構(gòu)數(shù)據(jù)訪問(wèn)層。所述生成組件模塊11,包括集成開(kāi)源組件子模塊111,用于將開(kāi)源組件集成為架構(gòu)組件,所述架構(gòu)組件包括 JNDI架構(gòu)組件,和/或,Spring架構(gòu)組件;封裝功能構(gòu)件模塊112,用于將自定義的功能構(gòu)件封裝為功能控件,所述功能控件包括數(shù)據(jù)訪問(wèn)管理控件和系統(tǒng)功能控制/調(diào)度控件;生成組件子模塊113,用于由所述架構(gòu)組件和功能控件共同生成基于JDBC的數(shù)據(jù)訪問(wèn)層框架生成組件。所述選擇架構(gòu)及配置模塊12,包括選擇架構(gòu)子模塊121,用于選擇所述架構(gòu)組件中的JNDI架構(gòu)組件作為程序架構(gòu), 或,選擇所述架構(gòu)組件中的Spring架構(gòu)組件作為程序架構(gòu)。所述選擇架構(gòu)及配置模塊12,還包括生成配置及模板子模塊122,用于在所選的程序架構(gòu)下,選擇數(shù)據(jù)訪問(wèn)管理控件自動(dòng)生成所選程序架構(gòu)的系統(tǒng)配置文件和源程序模板,其中,所述數(shù)據(jù)訪問(wèn)管理控件包括簡(jiǎn)單的Java對(duì)象基類、數(shù)據(jù)訪問(wèn)對(duì)象類、系統(tǒng)功能輔助控件和對(duì)象/關(guān)系映射控件;組合控件子模塊123,用于選擇系統(tǒng)功能控制/調(diào)度控件組合數(shù)據(jù)訪問(wèn)管理控件中的各個(gè)控件,快速生成數(shù)據(jù)訪問(wèn)層框架及構(gòu)件,并提供自動(dòng)和手動(dòng)系統(tǒng)部署功能。參照?qǐng)D9,給出了本申請(qǐng)實(shí)施例所述一種基于JDBC的數(shù)據(jù)訪問(wèn)層構(gòu)建裝置中生成配置及模板子模塊結(jié)構(gòu)圖。所述系統(tǒng)功能輔助控件創(chuàng)建XML文件集控件和生成源代碼/系統(tǒng)配置文件集控件;生成配置及模板子模塊122,包括生成配置及模板單元1221,用于生成源代碼/系統(tǒng)配置文件集控件生成數(shù)據(jù)訪問(wèn)層框架中的源代碼模板和系統(tǒng)配置文件,其中所述源程序代碼模板中包含簡(jiǎn)單的Java對(duì)象類、數(shù)據(jù)訪問(wèn)接口和數(shù)據(jù)訪問(wèn)接口實(shí)現(xiàn)類。創(chuàng)建對(duì)象模塊1222,用于所述對(duì)象/關(guān)系映射控件提取基于JDBC的相關(guān)數(shù)據(jù)庫(kù)表結(jié)構(gòu)信息,創(chuàng)建源程序代碼模板中的簡(jiǎn)單的Java對(duì)象和簡(jiǎn)單的Java對(duì)象邏輯功能,并實(shí)現(xiàn)簡(jiǎn)單的Java對(duì)象繼承基類的功能。繼承功能單元1223,用于所述簡(jiǎn)單的Java對(duì)象繼承基類的功能,所述功能為判斷數(shù)據(jù)訪問(wèn)層框架中是否存在簡(jiǎn)單的Java對(duì)象,和是否存在與所述簡(jiǎn)單的Java對(duì)象相等的對(duì)象。數(shù)據(jù)庫(kù)訪問(wèn)單元12M,用于所述數(shù)據(jù)訪問(wèn)對(duì)象類提供數(shù)據(jù)庫(kù)訪問(wèn)功能,其中,在JNDI架構(gòu)中,所述數(shù)據(jù)訪問(wèn)對(duì)象類為獲取數(shù)據(jù)庫(kù)訪問(wèn)必要信息提供功能支撐, 抽取數(shù)據(jù)訪問(wèn)的共性,形成數(shù)據(jù)庫(kù)操作的公共方法;或,在Spring架構(gòu)中,所述數(shù)據(jù)訪問(wèn)對(duì)象類被以依賴注入的方式管理,以屬性文件的形式配置和讀入數(shù)據(jù)庫(kù)配置信息,并以統(tǒng)一的方式加載。生成XML文件單元1225,用于所述XML文件集控件提取基于JDBC的相關(guān)數(shù)據(jù)庫(kù)表結(jié)構(gòu)信息,自動(dòng)生成數(shù)據(jù)訪問(wèn)層框架中存儲(chǔ)SQL語(yǔ)句的XML文件。所述生成XML文件單元1225,還用于應(yīng)用所述XML文件集控件完成XML文件中信息和簡(jiǎn)單的Java對(duì)象之間的映射。對(duì)于系統(tǒng)實(shí)施例而言,由于其與方法實(shí)施例基本相似,所以描述的比較簡(jiǎn)單,相關(guān)之處參見(jiàn)方法實(shí)施例的部分說(shuō)明即可。本說(shuō)明書中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說(shuō)明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似的部分互相參見(jiàn)即可。以上對(duì)本申請(qǐng)所提供的一種基于JDBC的數(shù)據(jù)訪問(wèn)層構(gòu)建方法及裝置,進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個(gè)例對(duì)本申請(qǐng)的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說(shuō)明只是用于幫助理解本申請(qǐng)的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù)本申請(qǐng)的思想,在具體實(shí)施方式
及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說(shuō)明書內(nèi)容不應(yīng)理解為對(duì)本申請(qǐng)的限制。
權(quán)利要求
1.一種基于JDBC的數(shù)據(jù)訪問(wèn)層構(gòu)建方法,其特征在于,包括通過(guò)集成開(kāi)源組件并封裝自定義的功能構(gòu)件,生成基于JDBC的數(shù)據(jù)訪問(wèn)層框架生成組件,其中,所述生成組件中包括架構(gòu)組件和功能控件;根據(jù)所述架構(gòu)組件選擇程序架構(gòu),在所選的程序架構(gòu)下,選擇相應(yīng)的功能控件產(chǎn)生適用于該程序架構(gòu)的系統(tǒng)配置文件和源程序模板;由上述所選的程序架構(gòu)和該程序架構(gòu)的系統(tǒng)配置文件及源程序模板,通過(guò)相關(guān)的程序配置建構(gòu)數(shù)據(jù)訪問(wèn)層。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述通過(guò)架構(gòu)開(kāi)源組件并封裝功能控件, 生成基于JDBC的數(shù)據(jù)訪問(wèn)層框架生成組件,包括將開(kāi)源組件集成為架構(gòu)組件,所述架構(gòu)組件包括JNDI架構(gòu)組件,和/或,Spring架構(gòu)組件;將自定義的功能構(gòu)件封裝為功能控件,所述功能控件包括數(shù)據(jù)訪問(wèn)管理控件和系統(tǒng)功能控制/調(diào)度控件;架構(gòu)組件和功能控件共同生成基于JDBC的數(shù)據(jù)訪問(wèn)層框架生成組件。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述根據(jù)所述架構(gòu)組件選擇程序架構(gòu),包括選擇所述架構(gòu)組件中的JNDI架構(gòu)組件作為程序架構(gòu),或,選擇所述架構(gòu)組件中的 Spring架構(gòu)組件作為程序架構(gòu)。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述在所選的程序架構(gòu)下,選擇相應(yīng)的功能控件產(chǎn)生適用于該程序架構(gòu)的系統(tǒng)配置文件和源程序模板,包括在所選的程序架構(gòu)下,選擇數(shù)據(jù)訪問(wèn)管理控件自動(dòng)生成所選程序架構(gòu)的系統(tǒng)配置文件和源程序模板,其中,所述數(shù)據(jù)訪問(wèn)管理控件包括簡(jiǎn)單的Java對(duì)象基類、數(shù)據(jù)訪問(wèn)對(duì)象類、 系統(tǒng)功能輔助控件和對(duì)象/關(guān)系映射控件;選擇系統(tǒng)功能控制/調(diào)度控件組合數(shù)據(jù)訪問(wèn)管理控件中的各個(gè)控件,快速生成數(shù)據(jù)訪問(wèn)層框架及構(gòu)件,并提供自動(dòng)和手動(dòng)系統(tǒng)部署功能。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于所述系統(tǒng)功能輔助控件創(chuàng)建XML文件集控件和生成源代碼/系統(tǒng)配置文件集控件;所述數(shù)據(jù)訪問(wèn)管理控件自動(dòng)生成所選程序架構(gòu)的系統(tǒng)配置文件和源程序模板,包括所述生成源代碼/系統(tǒng)配置文件集控件生成數(shù)據(jù)訪問(wèn)層框架中的源代碼模板和系統(tǒng)配置文件,其中所述源程序代碼模板中包含簡(jiǎn)單的Java對(duì)象類、數(shù)據(jù)訪問(wèn)接口和數(shù)據(jù)訪問(wèn)接口實(shí)現(xiàn)類。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,還包括所述對(duì)象/關(guān)系映射控件提取基于JDBC的相關(guān)數(shù)據(jù)庫(kù)表結(jié)構(gòu)信息,創(chuàng)建源程序代碼模板中的簡(jiǎn)單的Java對(duì)象和簡(jiǎn)單的Java對(duì)象邏輯功能,并實(shí)現(xiàn)簡(jiǎn)單的Java對(duì)象繼承基類的功能。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于所述簡(jiǎn)單的Java對(duì)象繼承基類的功能,所述功能為判斷數(shù)據(jù)訪問(wèn)層框架中是否存在簡(jiǎn)單的Java對(duì)象,和是否存在與所述簡(jiǎn)單的Java對(duì)象相等的對(duì)象。
8.根據(jù)權(quán)利要求5所述的方法,其特征在于,還包括所述數(shù)據(jù)訪問(wèn)對(duì)象類提供數(shù)據(jù)庫(kù)訪問(wèn)功能,其中,在JNDI架構(gòu)中,所述數(shù)據(jù)訪問(wèn)對(duì)象類為獲取數(shù)據(jù)庫(kù)訪問(wèn)必要信息提供功能支撐,抽取數(shù)據(jù)訪問(wèn)的共性,形成數(shù)據(jù)庫(kù)操作的公共方法; 或,在Spring架構(gòu)中,所述數(shù)據(jù)訪問(wèn)對(duì)象類被以依賴注入的方式管理,以屬性文件的形式配置和讀入數(shù)據(jù)庫(kù)配置信息,并以統(tǒng)一的方式加載。
9.根據(jù)權(quán)利要求5所述的方法,其特征在于,還包括所述XML文件集控件提取基于JDBC的相關(guān)數(shù)據(jù)庫(kù)表結(jié)構(gòu)信息,自動(dòng)生成數(shù)據(jù)訪問(wèn)層框架中存儲(chǔ)SQL語(yǔ)句的XML文件。
10.根據(jù)權(quán)利要求9所述的方法,其特征在于,還包括應(yīng)用所述XML文件集控件完成XML文件中信息和簡(jiǎn)單的Java對(duì)象之間的映射。
11.一種基于JDBC的數(shù)據(jù)訪問(wèn)層構(gòu)建裝置,其特征在于,包括生成組件模塊,用于通過(guò)集成開(kāi)源組件并封裝自定義的功能構(gòu)件,生成基于JDBC的數(shù)據(jù)訪問(wèn)層框架生成組件,其中,所述生成組件中包括架構(gòu)組件和功能控件;選擇架構(gòu)及配置模塊,用于根據(jù)所述架構(gòu)組件選擇程序架構(gòu),在所選的程序架構(gòu)下,選擇相應(yīng)的功能控件產(chǎn)生適用于該程序架構(gòu)的系統(tǒng)配置文件和源程序模板;建構(gòu)數(shù)據(jù)訪問(wèn)層模塊,用于由上述所選的程序架構(gòu)和該程序架構(gòu)的系統(tǒng)配置文件及源程序模板,通過(guò)相關(guān)的程序配置建構(gòu)數(shù)據(jù)訪問(wèn)層。
12.根據(jù)權(quán)利要求11所述的裝置,其特征在于,生成組件模塊,包括集成開(kāi)源組件子模塊,用于將開(kāi)源組件集成為架構(gòu)組件,所述架構(gòu)組件包括JNDI架構(gòu)組件,和/或,Spring架構(gòu)組件;封裝功能構(gòu)件模塊,用于將自定義的功能構(gòu)件封裝為功能控件,所述功能控件包括數(shù)據(jù)訪問(wèn)管理控件和系統(tǒng)功能控制/調(diào)度控件;生成組件子模塊,用于架構(gòu)組件和功能控件共同生成基于JDBC的數(shù)據(jù)訪問(wèn)層框架生成組件。
13.根據(jù)權(quán)利要求12所述的裝置,其特征在于,所述選擇架構(gòu)及配置模塊,包括 選擇架構(gòu)子模塊,用于選擇所述架構(gòu)組件中的JNDI架構(gòu)組件作為程序架構(gòu),或,選擇所述架構(gòu)組件中的Spring架構(gòu)組件作為程序架構(gòu)。
14.根據(jù)權(quán)利要求13所述的方法,其特征在于,所述選擇架構(gòu)及配置模塊,還包括 生成配置及模板子模塊,用于在所選的程序架構(gòu)下,選擇數(shù)據(jù)訪問(wèn)管理控件自動(dòng)生成所選程序架構(gòu)的系統(tǒng)配置文件和源程序模板,其中,所述數(shù)據(jù)訪問(wèn)管理控件包括簡(jiǎn)單的 Java對(duì)象基類、數(shù)據(jù)訪問(wèn)對(duì)象類、系統(tǒng)功能輔助控件和對(duì)象/關(guān)系映射控件;組合控件子模塊,用于選擇系統(tǒng)功能控制/調(diào)度控件組合數(shù)據(jù)訪問(wèn)管理控件中的各個(gè)控件,快速生成數(shù)據(jù)訪問(wèn)層框架及構(gòu)件,并提供自動(dòng)和手動(dòng)系統(tǒng)部署功能。
全文摘要
本申請(qǐng)?zhí)峁┝艘环N基于JDBC的數(shù)據(jù)訪問(wèn)層構(gòu)建方法及裝置,以解決數(shù)據(jù)訪問(wèn)層開(kāi)發(fā)過(guò)程中程序架構(gòu)和編程方式各異,系統(tǒng)配置復(fù)雜的問(wèn)題。所述的方法包括通過(guò)集成開(kāi)源組件并封裝自定義的功能構(gòu)件,生成基于JDBC的數(shù)據(jù)訪問(wèn)層框架生成組件,其中,所述生成組件中包括架構(gòu)組件和功能控件;根據(jù)所述架構(gòu)組件選擇程序架構(gòu),在所選的程序架構(gòu)下,選擇相應(yīng)的功能控件產(chǎn)生適用于該程序架構(gòu)的系統(tǒng)配置文件和源程序模板;由上述所選的程序架構(gòu)和該程序架構(gòu)的系統(tǒng)配置文件及源程序模板,通過(guò)相關(guān)的程序配置建構(gòu)數(shù)據(jù)訪問(wèn)層。能夠快速生成數(shù)據(jù)訪問(wèn)層框架及構(gòu)件的生成組件,從而降低系統(tǒng)開(kāi)發(fā)復(fù)雜度和時(shí)間,并且實(shí)現(xiàn)數(shù)據(jù)訪問(wèn)層開(kāi)發(fā)的統(tǒng)一和標(biāo)準(zhǔn)。
文檔編號(hào)G06F17/30GK102541996SQ20111037456
公開(kāi)日2012年7月4日 申請(qǐng)日期2011年11月22日 優(yōu)先權(quán)日2011年11月22日
發(fā)明者張 浩, 楊旭, 田永宏 申請(qǐng)人:大唐軟件技術(shù)股份有限公司