章亞
摘要:考慮使用數(shù)據(jù)集組件來(lái)連接數(shù)據(jù)庫(kù)并操作數(shù)據(jù)庫(kù)表中數(shù)據(jù)在軟件開(kāi)發(fā)中的方便性,其具有強(qiáng)大的數(shù)據(jù)操作能力,在很多開(kāi)發(fā)環(huán)境中都提供了相應(yīng)的數(shù)據(jù)集組件,但在JAVA語(yǔ)言的開(kāi)發(fā)環(huán)境中沒(méi)有與之對(duì)應(yīng)的數(shù)據(jù)集組件,一般采用JDBC接口或者OR映射的方式完成數(shù)據(jù)的操作,其中JDBC接口因其屬于較低層次接口需要大量的編程,而OR映射在涉及復(fù)雜數(shù)據(jù)關(guān)系及大量數(shù)據(jù)訪問(wèn)是容易出現(xiàn)性能問(wèn)題,在借鑒其他環(huán)境中數(shù)據(jù)集的設(shè)計(jì)理念的基礎(chǔ)上,以實(shí)際開(kāi)發(fā)要求為目標(biāo),設(shè)計(jì)一種基于JDBC封裝的JAVA通用數(shù)據(jù)集數(shù)據(jù)訪問(wèn)框架。
關(guān)鍵詞:數(shù)據(jù)集;數(shù)據(jù)集組件; 數(shù)據(jù)訪問(wèn);數(shù)據(jù)訪問(wèn)框架;JAVA語(yǔ)言
中圖分類號(hào):TP311.1 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2014)33-7895-07
Abstract: Consider the convenience in software development of using a dataset component to connect to the database and manipulate data in a database table, it has a powerful data manipulation capabilities, it has provided corresponding data set components in many development environment, but in the development of JAVA language environment, there is no corresponding data set components, it generally used the JDBC interface or a way to complete the operation by OR mapping data, but the JDBC interface belong to the lower level, and requires a lot of programming; The OR mapping method will prone to performance issues while involves complex data relationships and a lot of data access. On the basis of the experience of other environmental data set and on the design concept to the actual development of requirements for the goals, designed a JAVA common data set framework for JDBC-based data access package.
Key words: dataset; dataset component; data access; data access framework; JAVA languag
1 概述
軟件開(kāi)發(fā)中,數(shù)據(jù)庫(kù)往往是信息系統(tǒng)的基石,即便是最簡(jiǎn)單的信息系統(tǒng)中都會(huì)涉及到數(shù)據(jù)的持久性和數(shù)據(jù)的訪問(wèn)。而JAVA作為一種可以撰寫(xiě)跨平臺(tái)應(yīng)用軟件的面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言,被廣泛的應(yīng)用與當(dāng)前的各種信息系統(tǒng)開(kāi)發(fā)。但對(duì)于用Delphi及.Net開(kāi)發(fā)過(guò)應(yīng)用系統(tǒng)的開(kāi)發(fā)人員大多都使用過(guò)數(shù)據(jù)集組件來(lái)連接數(shù)據(jù)庫(kù)并操作數(shù)據(jù)庫(kù)表數(shù)據(jù)的功能。這些功能使用很方便,同時(shí)有強(qiáng)大的數(shù)據(jù)操縱能力,可以對(duì)各種數(shù)據(jù)庫(kù)進(jìn)行統(tǒng)一操縱,數(shù)據(jù)組件會(huì)根據(jù)不同數(shù)據(jù)庫(kù)的語(yǔ)法要求自動(dòng)生成新增(insert)、修改(update)及刪除(delete)等DML語(yǔ)句對(duì)數(shù)據(jù)庫(kù)記錄進(jìn)行操縱。在JAVA環(huán)境中沒(méi)有與之對(duì)應(yīng)的數(shù)據(jù)集組件,JAVA主要依靠JDBC接口[1]來(lái)操作數(shù)據(jù)庫(kù)數(shù)據(jù),但JDBC屬于一個(gè)較低層次的接口,雖然功能強(qiáng)大但需要較多的編程量,所以使用并不方便。有些JAVA持久層框架[2](如Hibernate)基于JDBC做了一些包裝并提出了OR映射的概念,通過(guò)操作對(duì)象的方式間接操作關(guān)系數(shù)據(jù)庫(kù)中的記錄,由OR映射框架自動(dòng)將對(duì)象的新增、修改、刪除等操作自動(dòng)轉(zhuǎn)換成特定關(guān)系數(shù)據(jù)庫(kù)的DML語(yǔ)句。這種方式在JAVA世界中應(yīng)用很多。但OR映射需要許多手工配置,且在涉及大數(shù)據(jù)量且表間關(guān)系復(fù)雜的情況時(shí)容易出現(xiàn)性能問(wèn)題。并且對(duì)習(xí)慣SQL及數(shù)據(jù)集操作的程序員來(lái)說(shuō),對(duì)于對(duì)象的操作不如對(duì)記錄行的操作直接和靈活。針對(duì)這些框架的問(wèn)題,IBM 和BEA設(shè)計(jì)了SDO(Service Data Object)[3],方便了數(shù)據(jù)訪問(wèn)和操作。該文借鑒了SDO的方法及Delphi、.Net數(shù)據(jù)集的設(shè)計(jì)理念[4-7],應(yīng)用軟件設(shè)計(jì)模式方法[8-9],結(jié)合實(shí)際的開(kāi)發(fā)經(jīng)驗(yàn),設(shè)計(jì)一種基于JDBC的JAVA通用數(shù)據(jù)集數(shù)據(jù)訪問(wèn)框架。
2 總體設(shè)計(jì)
整個(gè)框架設(shè)計(jì)的目標(biāo)包括:
1)通用性,實(shí)現(xiàn)一種通用的關(guān)系數(shù)據(jù)庫(kù)訪問(wèn)機(jī)制,能夠獨(dú)立于數(shù)據(jù)庫(kù),采用一致的數(shù)據(jù)集的方式訪問(wèn)及操作各種關(guān)系數(shù)據(jù)庫(kù)。
2) 方便性,充分利用數(shù)據(jù)庫(kù)的元數(shù)據(jù)功能,無(wú)需配置就能根據(jù)數(shù)據(jù)集的狀態(tài),自動(dòng)生成某種數(shù)據(jù)庫(kù)的DML語(yǔ)句,盡量減少編程量。
3) 擴(kuò)展性,能支持現(xiàn)存或未來(lái)出現(xiàn)的各種關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)。
設(shè)計(jì)思路:
為達(dá)到以上設(shè)計(jì)目標(biāo),考慮將通用數(shù)據(jù)集框架主要分為2個(gè)大的部分來(lái)實(shí)現(xiàn):
第一部分是獨(dú)立于數(shù)據(jù)庫(kù)的,這一部分里,所有操作的實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)來(lái)說(shuō)是完全中立的,無(wú)需考慮數(shù)據(jù)庫(kù)的差異性;
第二部分是數(shù)據(jù)庫(kù)相關(guān)的,這一部分里,所有操作的實(shí)現(xiàn)都要考慮特定數(shù)據(jù)庫(kù)的差異,并通過(guò)接口及抽象類使這種差異對(duì)第一部分屏蔽。
3 獨(dú)立于數(shù)據(jù)庫(kù)的部分設(shè)計(jì)
獨(dú)立于數(shù)據(jù)庫(kù)的部分主要是數(shù)據(jù)表(DataTable)對(duì)象,其中包括數(shù)據(jù)列管理器(DataColumns)、數(shù)據(jù)列(DataColumn)、數(shù)據(jù)行管理器(DataRows)、數(shù)據(jù)行(DataRow)、數(shù)據(jù)字段(DataField)等對(duì)象。對(duì)于開(kāi)發(fā)應(yīng)用開(kāi)發(fā)者來(lái)說(shuō),主要是對(duì)這些部分的對(duì)象進(jìn)行操作。以下對(duì)這些對(duì)象的功能進(jìn)行介紹。
參考文獻(xiàn):
[1] 張峋,楊三成.關(guān)鍵技術(shù) JSP與JDBC應(yīng)用詳解[M].北京:中國(guó)鐵道出版社,2010
[2] 孫衛(wèi)琴. 精通Hibernate:Java對(duì)象持久化技術(shù)詳解[M].2版.北京:電子工業(yè)出版社,2010.
[3] Ueli Wahli,Gabriel Cohen,Matthew Perrins.WebSphere Studio 5.1.2 JavaServer Faces and Service Data Objects[EB/OL].http://www.redbooks.ibm.com/redbooks/pdfs/sg246361.pdf.
[4] 張敬普,丁士鋒.精通C# 5.0與.NET 4.5高級(jí)編程——LINQ、WCF、WPF和WF[M].北京:清華大學(xué)出版社, 2014.
[5] 謝爾頓. NET 4.5與Visual Basic 2012 高級(jí)編程[M].7版.北京:清華大學(xué)出版社,2014.
[6] 阿加瓦爾. C# 2012數(shù)據(jù)庫(kù)編程入門經(jīng)典[M]. 5版.北京:清華大學(xué)出版社. 2013
[7] 石志國(guó). VB.NET數(shù)據(jù)庫(kù)編程[M].北京交通大學(xué)出版社,2009.
[8] 伽瑪.設(shè)計(jì)模式—可復(fù)用面向?qū)ο筌浖幕A(chǔ)[M].北京:機(jī)械工業(yè)出版社,2013.
[9] 弗里曼.Head First設(shè)計(jì)模式[M].北京:中國(guó)電力出版社,2007.endprint
摘要:考慮使用數(shù)據(jù)集組件來(lái)連接數(shù)據(jù)庫(kù)并操作數(shù)據(jù)庫(kù)表中數(shù)據(jù)在軟件開(kāi)發(fā)中的方便性,其具有強(qiáng)大的數(shù)據(jù)操作能力,在很多開(kāi)發(fā)環(huán)境中都提供了相應(yīng)的數(shù)據(jù)集組件,但在JAVA語(yǔ)言的開(kāi)發(fā)環(huán)境中沒(méi)有與之對(duì)應(yīng)的數(shù)據(jù)集組件,一般采用JDBC接口或者OR映射的方式完成數(shù)據(jù)的操作,其中JDBC接口因其屬于較低層次接口需要大量的編程,而OR映射在涉及復(fù)雜數(shù)據(jù)關(guān)系及大量數(shù)據(jù)訪問(wèn)是容易出現(xiàn)性能問(wèn)題,在借鑒其他環(huán)境中數(shù)據(jù)集的設(shè)計(jì)理念的基礎(chǔ)上,以實(shí)際開(kāi)發(fā)要求為目標(biāo),設(shè)計(jì)一種基于JDBC封裝的JAVA通用數(shù)據(jù)集數(shù)據(jù)訪問(wèn)框架。
關(guān)鍵詞:數(shù)據(jù)集;數(shù)據(jù)集組件; 數(shù)據(jù)訪問(wèn);數(shù)據(jù)訪問(wèn)框架;JAVA語(yǔ)言
中圖分類號(hào):TP311.1 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2014)33-7895-07
Abstract: Consider the convenience in software development of using a dataset component to connect to the database and manipulate data in a database table, it has a powerful data manipulation capabilities, it has provided corresponding data set components in many development environment, but in the development of JAVA language environment, there is no corresponding data set components, it generally used the JDBC interface or a way to complete the operation by OR mapping data, but the JDBC interface belong to the lower level, and requires a lot of programming; The OR mapping method will prone to performance issues while involves complex data relationships and a lot of data access. On the basis of the experience of other environmental data set and on the design concept to the actual development of requirements for the goals, designed a JAVA common data set framework for JDBC-based data access package.
Key words: dataset; dataset component; data access; data access framework; JAVA languag
1 概述
軟件開(kāi)發(fā)中,數(shù)據(jù)庫(kù)往往是信息系統(tǒng)的基石,即便是最簡(jiǎn)單的信息系統(tǒng)中都會(huì)涉及到數(shù)據(jù)的持久性和數(shù)據(jù)的訪問(wèn)。而JAVA作為一種可以撰寫(xiě)跨平臺(tái)應(yīng)用軟件的面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言,被廣泛的應(yīng)用與當(dāng)前的各種信息系統(tǒng)開(kāi)發(fā)。但對(duì)于用Delphi及.Net開(kāi)發(fā)過(guò)應(yīng)用系統(tǒng)的開(kāi)發(fā)人員大多都使用過(guò)數(shù)據(jù)集組件來(lái)連接數(shù)據(jù)庫(kù)并操作數(shù)據(jù)庫(kù)表數(shù)據(jù)的功能。這些功能使用很方便,同時(shí)有強(qiáng)大的數(shù)據(jù)操縱能力,可以對(duì)各種數(shù)據(jù)庫(kù)進(jìn)行統(tǒng)一操縱,數(shù)據(jù)組件會(huì)根據(jù)不同數(shù)據(jù)庫(kù)的語(yǔ)法要求自動(dòng)生成新增(insert)、修改(update)及刪除(delete)等DML語(yǔ)句對(duì)數(shù)據(jù)庫(kù)記錄進(jìn)行操縱。在JAVA環(huán)境中沒(méi)有與之對(duì)應(yīng)的數(shù)據(jù)集組件,JAVA主要依靠JDBC接口[1]來(lái)操作數(shù)據(jù)庫(kù)數(shù)據(jù),但JDBC屬于一個(gè)較低層次的接口,雖然功能強(qiáng)大但需要較多的編程量,所以使用并不方便。有些JAVA持久層框架[2](如Hibernate)基于JDBC做了一些包裝并提出了OR映射的概念,通過(guò)操作對(duì)象的方式間接操作關(guān)系數(shù)據(jù)庫(kù)中的記錄,由OR映射框架自動(dòng)將對(duì)象的新增、修改、刪除等操作自動(dòng)轉(zhuǎn)換成特定關(guān)系數(shù)據(jù)庫(kù)的DML語(yǔ)句。這種方式在JAVA世界中應(yīng)用很多。但OR映射需要許多手工配置,且在涉及大數(shù)據(jù)量且表間關(guān)系復(fù)雜的情況時(shí)容易出現(xiàn)性能問(wèn)題。并且對(duì)習(xí)慣SQL及數(shù)據(jù)集操作的程序員來(lái)說(shuō),對(duì)于對(duì)象的操作不如對(duì)記錄行的操作直接和靈活。針對(duì)這些框架的問(wèn)題,IBM 和BEA設(shè)計(jì)了SDO(Service Data Object)[3],方便了數(shù)據(jù)訪問(wèn)和操作。該文借鑒了SDO的方法及Delphi、.Net數(shù)據(jù)集的設(shè)計(jì)理念[4-7],應(yīng)用軟件設(shè)計(jì)模式方法[8-9],結(jié)合實(shí)際的開(kāi)發(fā)經(jīng)驗(yàn),設(shè)計(jì)一種基于JDBC的JAVA通用數(shù)據(jù)集數(shù)據(jù)訪問(wèn)框架。
2 總體設(shè)計(jì)
整個(gè)框架設(shè)計(jì)的目標(biāo)包括:
1)通用性,實(shí)現(xiàn)一種通用的關(guān)系數(shù)據(jù)庫(kù)訪問(wèn)機(jī)制,能夠獨(dú)立于數(shù)據(jù)庫(kù),采用一致的數(shù)據(jù)集的方式訪問(wèn)及操作各種關(guān)系數(shù)據(jù)庫(kù)。
2) 方便性,充分利用數(shù)據(jù)庫(kù)的元數(shù)據(jù)功能,無(wú)需配置就能根據(jù)數(shù)據(jù)集的狀態(tài),自動(dòng)生成某種數(shù)據(jù)庫(kù)的DML語(yǔ)句,盡量減少編程量。
3) 擴(kuò)展性,能支持現(xiàn)存或未來(lái)出現(xiàn)的各種關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)。
設(shè)計(jì)思路:
為達(dá)到以上設(shè)計(jì)目標(biāo),考慮將通用數(shù)據(jù)集框架主要分為2個(gè)大的部分來(lái)實(shí)現(xiàn):
第一部分是獨(dú)立于數(shù)據(jù)庫(kù)的,這一部分里,所有操作的實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)來(lái)說(shuō)是完全中立的,無(wú)需考慮數(shù)據(jù)庫(kù)的差異性;
第二部分是數(shù)據(jù)庫(kù)相關(guān)的,這一部分里,所有操作的實(shí)現(xiàn)都要考慮特定數(shù)據(jù)庫(kù)的差異,并通過(guò)接口及抽象類使這種差異對(duì)第一部分屏蔽。
3 獨(dú)立于數(shù)據(jù)庫(kù)的部分設(shè)計(jì)
獨(dú)立于數(shù)據(jù)庫(kù)的部分主要是數(shù)據(jù)表(DataTable)對(duì)象,其中包括數(shù)據(jù)列管理器(DataColumns)、數(shù)據(jù)列(DataColumn)、數(shù)據(jù)行管理器(DataRows)、數(shù)據(jù)行(DataRow)、數(shù)據(jù)字段(DataField)等對(duì)象。對(duì)于開(kāi)發(fā)應(yīng)用開(kāi)發(fā)者來(lái)說(shuō),主要是對(duì)這些部分的對(duì)象進(jìn)行操作。以下對(duì)這些對(duì)象的功能進(jìn)行介紹。
參考文獻(xiàn):
[1] 張峋,楊三成.關(guān)鍵技術(shù) JSP與JDBC應(yīng)用詳解[M].北京:中國(guó)鐵道出版社,2010
[2] 孫衛(wèi)琴. 精通Hibernate:Java對(duì)象持久化技術(shù)詳解[M].2版.北京:電子工業(yè)出版社,2010.
[3] Ueli Wahli,Gabriel Cohen,Matthew Perrins.WebSphere Studio 5.1.2 JavaServer Faces and Service Data Objects[EB/OL].http://www.redbooks.ibm.com/redbooks/pdfs/sg246361.pdf.
[4] 張敬普,丁士鋒.精通C# 5.0與.NET 4.5高級(jí)編程——LINQ、WCF、WPF和WF[M].北京:清華大學(xué)出版社, 2014.
[5] 謝爾頓. NET 4.5與Visual Basic 2012 高級(jí)編程[M].7版.北京:清華大學(xué)出版社,2014.
[6] 阿加瓦爾. C# 2012數(shù)據(jù)庫(kù)編程入門經(jīng)典[M]. 5版.北京:清華大學(xué)出版社. 2013
[7] 石志國(guó). VB.NET數(shù)據(jù)庫(kù)編程[M].北京交通大學(xué)出版社,2009.
[8] 伽瑪.設(shè)計(jì)模式—可復(fù)用面向?qū)ο筌浖幕A(chǔ)[M].北京:機(jī)械工業(yè)出版社,2013.
[9] 弗里曼.Head First設(shè)計(jì)模式[M].北京:中國(guó)電力出版社,2007.endprint
摘要:考慮使用數(shù)據(jù)集組件來(lái)連接數(shù)據(jù)庫(kù)并操作數(shù)據(jù)庫(kù)表中數(shù)據(jù)在軟件開(kāi)發(fā)中的方便性,其具有強(qiáng)大的數(shù)據(jù)操作能力,在很多開(kāi)發(fā)環(huán)境中都提供了相應(yīng)的數(shù)據(jù)集組件,但在JAVA語(yǔ)言的開(kāi)發(fā)環(huán)境中沒(méi)有與之對(duì)應(yīng)的數(shù)據(jù)集組件,一般采用JDBC接口或者OR映射的方式完成數(shù)據(jù)的操作,其中JDBC接口因其屬于較低層次接口需要大量的編程,而OR映射在涉及復(fù)雜數(shù)據(jù)關(guān)系及大量數(shù)據(jù)訪問(wèn)是容易出現(xiàn)性能問(wèn)題,在借鑒其他環(huán)境中數(shù)據(jù)集的設(shè)計(jì)理念的基礎(chǔ)上,以實(shí)際開(kāi)發(fā)要求為目標(biāo),設(shè)計(jì)一種基于JDBC封裝的JAVA通用數(shù)據(jù)集數(shù)據(jù)訪問(wèn)框架。
關(guān)鍵詞:數(shù)據(jù)集;數(shù)據(jù)集組件; 數(shù)據(jù)訪問(wèn);數(shù)據(jù)訪問(wèn)框架;JAVA語(yǔ)言
中圖分類號(hào):TP311.1 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2014)33-7895-07
Abstract: Consider the convenience in software development of using a dataset component to connect to the database and manipulate data in a database table, it has a powerful data manipulation capabilities, it has provided corresponding data set components in many development environment, but in the development of JAVA language environment, there is no corresponding data set components, it generally used the JDBC interface or a way to complete the operation by OR mapping data, but the JDBC interface belong to the lower level, and requires a lot of programming; The OR mapping method will prone to performance issues while involves complex data relationships and a lot of data access. On the basis of the experience of other environmental data set and on the design concept to the actual development of requirements for the goals, designed a JAVA common data set framework for JDBC-based data access package.
Key words: dataset; dataset component; data access; data access framework; JAVA languag
1 概述
軟件開(kāi)發(fā)中,數(shù)據(jù)庫(kù)往往是信息系統(tǒng)的基石,即便是最簡(jiǎn)單的信息系統(tǒng)中都會(huì)涉及到數(shù)據(jù)的持久性和數(shù)據(jù)的訪問(wèn)。而JAVA作為一種可以撰寫(xiě)跨平臺(tái)應(yīng)用軟件的面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言,被廣泛的應(yīng)用與當(dāng)前的各種信息系統(tǒng)開(kāi)發(fā)。但對(duì)于用Delphi及.Net開(kāi)發(fā)過(guò)應(yīng)用系統(tǒng)的開(kāi)發(fā)人員大多都使用過(guò)數(shù)據(jù)集組件來(lái)連接數(shù)據(jù)庫(kù)并操作數(shù)據(jù)庫(kù)表數(shù)據(jù)的功能。這些功能使用很方便,同時(shí)有強(qiáng)大的數(shù)據(jù)操縱能力,可以對(duì)各種數(shù)據(jù)庫(kù)進(jìn)行統(tǒng)一操縱,數(shù)據(jù)組件會(huì)根據(jù)不同數(shù)據(jù)庫(kù)的語(yǔ)法要求自動(dòng)生成新增(insert)、修改(update)及刪除(delete)等DML語(yǔ)句對(duì)數(shù)據(jù)庫(kù)記錄進(jìn)行操縱。在JAVA環(huán)境中沒(méi)有與之對(duì)應(yīng)的數(shù)據(jù)集組件,JAVA主要依靠JDBC接口[1]來(lái)操作數(shù)據(jù)庫(kù)數(shù)據(jù),但JDBC屬于一個(gè)較低層次的接口,雖然功能強(qiáng)大但需要較多的編程量,所以使用并不方便。有些JAVA持久層框架[2](如Hibernate)基于JDBC做了一些包裝并提出了OR映射的概念,通過(guò)操作對(duì)象的方式間接操作關(guān)系數(shù)據(jù)庫(kù)中的記錄,由OR映射框架自動(dòng)將對(duì)象的新增、修改、刪除等操作自動(dòng)轉(zhuǎn)換成特定關(guān)系數(shù)據(jù)庫(kù)的DML語(yǔ)句。這種方式在JAVA世界中應(yīng)用很多。但OR映射需要許多手工配置,且在涉及大數(shù)據(jù)量且表間關(guān)系復(fù)雜的情況時(shí)容易出現(xiàn)性能問(wèn)題。并且對(duì)習(xí)慣SQL及數(shù)據(jù)集操作的程序員來(lái)說(shuō),對(duì)于對(duì)象的操作不如對(duì)記錄行的操作直接和靈活。針對(duì)這些框架的問(wèn)題,IBM 和BEA設(shè)計(jì)了SDO(Service Data Object)[3],方便了數(shù)據(jù)訪問(wèn)和操作。該文借鑒了SDO的方法及Delphi、.Net數(shù)據(jù)集的設(shè)計(jì)理念[4-7],應(yīng)用軟件設(shè)計(jì)模式方法[8-9],結(jié)合實(shí)際的開(kāi)發(fā)經(jīng)驗(yàn),設(shè)計(jì)一種基于JDBC的JAVA通用數(shù)據(jù)集數(shù)據(jù)訪問(wèn)框架。
2 總體設(shè)計(jì)
整個(gè)框架設(shè)計(jì)的目標(biāo)包括:
1)通用性,實(shí)現(xiàn)一種通用的關(guān)系數(shù)據(jù)庫(kù)訪問(wèn)機(jī)制,能夠獨(dú)立于數(shù)據(jù)庫(kù),采用一致的數(shù)據(jù)集的方式訪問(wèn)及操作各種關(guān)系數(shù)據(jù)庫(kù)。
2) 方便性,充分利用數(shù)據(jù)庫(kù)的元數(shù)據(jù)功能,無(wú)需配置就能根據(jù)數(shù)據(jù)集的狀態(tài),自動(dòng)生成某種數(shù)據(jù)庫(kù)的DML語(yǔ)句,盡量減少編程量。
3) 擴(kuò)展性,能支持現(xiàn)存或未來(lái)出現(xiàn)的各種關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)。
設(shè)計(jì)思路:
為達(dá)到以上設(shè)計(jì)目標(biāo),考慮將通用數(shù)據(jù)集框架主要分為2個(gè)大的部分來(lái)實(shí)現(xiàn):
第一部分是獨(dú)立于數(shù)據(jù)庫(kù)的,這一部分里,所有操作的實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)來(lái)說(shuō)是完全中立的,無(wú)需考慮數(shù)據(jù)庫(kù)的差異性;
第二部分是數(shù)據(jù)庫(kù)相關(guān)的,這一部分里,所有操作的實(shí)現(xiàn)都要考慮特定數(shù)據(jù)庫(kù)的差異,并通過(guò)接口及抽象類使這種差異對(duì)第一部分屏蔽。
3 獨(dú)立于數(shù)據(jù)庫(kù)的部分設(shè)計(jì)
獨(dú)立于數(shù)據(jù)庫(kù)的部分主要是數(shù)據(jù)表(DataTable)對(duì)象,其中包括數(shù)據(jù)列管理器(DataColumns)、數(shù)據(jù)列(DataColumn)、數(shù)據(jù)行管理器(DataRows)、數(shù)據(jù)行(DataRow)、數(shù)據(jù)字段(DataField)等對(duì)象。對(duì)于開(kāi)發(fā)應(yīng)用開(kāi)發(fā)者來(lái)說(shuō),主要是對(duì)這些部分的對(duì)象進(jìn)行操作。以下對(duì)這些對(duì)象的功能進(jìn)行介紹。
參考文獻(xiàn):
[1] 張峋,楊三成.關(guān)鍵技術(shù) JSP與JDBC應(yīng)用詳解[M].北京:中國(guó)鐵道出版社,2010
[2] 孫衛(wèi)琴. 精通Hibernate:Java對(duì)象持久化技術(shù)詳解[M].2版.北京:電子工業(yè)出版社,2010.
[3] Ueli Wahli,Gabriel Cohen,Matthew Perrins.WebSphere Studio 5.1.2 JavaServer Faces and Service Data Objects[EB/OL].http://www.redbooks.ibm.com/redbooks/pdfs/sg246361.pdf.
[4] 張敬普,丁士鋒.精通C# 5.0與.NET 4.5高級(jí)編程——LINQ、WCF、WPF和WF[M].北京:清華大學(xué)出版社, 2014.
[5] 謝爾頓. NET 4.5與Visual Basic 2012 高級(jí)編程[M].7版.北京:清華大學(xué)出版社,2014.
[6] 阿加瓦爾. C# 2012數(shù)據(jù)庫(kù)編程入門經(jīng)典[M]. 5版.北京:清華大學(xué)出版社. 2013
[7] 石志國(guó). VB.NET數(shù)據(jù)庫(kù)編程[M].北京交通大學(xué)出版社,2009.
[8] 伽瑪.設(shè)計(jì)模式—可復(fù)用面向?qū)ο筌浖幕A(chǔ)[M].北京:機(jī)械工業(yè)出版社,2013.
[9] 弗里曼.Head First設(shè)計(jì)模式[M].北京:中國(guó)電力出版社,2007.endprint