基于ODBC-JDBC的數(shù)據(jù)庫連接策略的實(shí)現(xiàn)與優(yōu)化論文
【摘 要】使用JSP技術(shù)開發(fā)動(dòng)態(tài)交互式Web信息系統(tǒng)是當(dāng)今Internet主流技術(shù)之一,隨著網(wǎng)絡(luò)應(yīng)用和電子商務(wù)的迅速發(fā)展,站點(diǎn)與數(shù)據(jù)庫連接的操作越來越頻繁,也越來越復(fù)雜。通過分析現(xiàn)有的數(shù)據(jù)庫連接技術(shù),選擇使用ODBC-JDBC橋驅(qū)動(dòng)程序作為JDBC的驅(qū)動(dòng)程序,介紹其連接策略、實(shí)現(xiàn)方法,并對(duì)其從驅(qū)動(dòng)程序、連接對(duì)象、執(zhí)行對(duì)象等方面進(jìn)行優(yōu)化策略分析。
【關(guān)鍵詞】ODBC-JDBC,實(shí)現(xiàn)方法,優(yōu)化策略
1 數(shù)據(jù)庫連接技術(shù)介紹
數(shù)據(jù)庫軟件設(shè)計(jì)開發(fā)不可避免地應(yīng)用數(shù)據(jù)庫連接,建立數(shù)據(jù)庫連接,與數(shù)據(jù)庫進(jìn)行通信,執(zhí)行SQl語句并檢索查詢結(jié)果。目前實(shí)現(xiàn)上述活動(dòng)的常用技術(shù)是ODBC和JDBC。
ODBC是Open DataBase Connectivity的縮寫,是微軟公司提供的應(yīng)用程序接口,用于訪問數(shù)據(jù)庫。使用結(jié)構(gòu)化查詢語言作為其數(shù)據(jù)庫語言,并提供插入、修改和刪除數(shù)據(jù)庫以及從數(shù)據(jù)庫中提取信息的功能。
JDBC是Java DataBase Connectivity的縮寫,是Sun Microsystems提供的Java API一部分,它定義了一組API對(duì)象以及與數(shù)據(jù)庫進(jìn)行交互的方法。
ADO是Activex Data Objects的縮寫,是一個(gè)用于存取數(shù)據(jù)源的COM組建。提供了編程語言和統(tǒng)一數(shù)據(jù)訪問方式OLE DB的一個(gè)中間層。允許開發(fā)人員編寫訪問數(shù)據(jù)的代碼而不用關(guān)心數(shù)據(jù)庫如何實(shí)現(xiàn),而只關(guān)心到數(shù)據(jù)庫的連接。
ADO.net是在.net編程環(huán)境中優(yōu)先使用的數(shù)據(jù)訪問接口。他提供了數(shù)據(jù)訪問的互用性和可伸縮性。
ADO.net是一組用于和數(shù)據(jù)源進(jìn)行交互的面向?qū)ο蟮念悗。通常情況下,數(shù)據(jù)源是數(shù)據(jù)庫,但同樣也能夠是文本文件、Excel表格或者是XML文件。
2 Java中連接技術(shù)選擇
ODBC使用的是C語言接口,對(duì)于Java而言,對(duì)本地C語言代碼的調(diào)用在應(yīng)用程序的安全性、實(shí)現(xiàn)性、健壯性以及可移植性等方面存在缺陷,束縛了ODBC驅(qū)動(dòng)程序在Java應(yīng)用程序中的應(yīng)用。
盡管Java中存在的Java.io包提供了豐富的類和接口,但是通過這些類和接口訪問的數(shù)據(jù)是以流的形式表示的,因此對(duì)于訪問存儲(chǔ)在外部數(shù)據(jù)提供的程序,比如SQLServer、Oracle和Access中的數(shù)據(jù)的所有Java應(yīng)用程序而言,JDBC是彌補(bǔ)缺陷的良藥,是必須的。
在Java語言中, JDBC ( Java DataBaseConnection)是應(yīng)用程序與數(shù)據(jù)庫溝通的橋梁,即Java語言通過JDBC技術(shù)訪問數(shù)據(jù)庫。JDBC是一種“開放”的方案,它為數(shù)據(jù)庫應(yīng)用開發(fā)人員、數(shù)據(jù)庫前臺(tái)工具開發(fā)人員提供了一種標(biāo)準(zhǔn)的應(yīng)用程序設(shè)計(jì)接口,使開發(fā)人員可以用純Java語言編寫完整的數(shù)據(jù)庫應(yīng)用程序。
JDBC提供兩種API,分別是面向開發(fā)人員的API和面向底層的JDBC驅(qū)動(dòng)程序API,底層主要通過直接的JDBC驅(qū)動(dòng)和JDBC-ODBC橋驅(qū)動(dòng)實(shí)現(xiàn)與數(shù)據(jù)庫的連接。
一般來說,Java應(yīng)用程序訪問數(shù)據(jù)庫的過程是:①裝載數(shù)據(jù)庫驅(qū)動(dòng)程序;
、谕ㄟ^JDBC建立數(shù)據(jù)庫連接;
、墼L問數(shù)據(jù)庫,執(zhí)行SQL語句;
、軘嚅_數(shù)據(jù)庫連接。
對(duì)于共享資源,有一個(gè)很著名的設(shè)計(jì)模式:資源池(Resource Pool)。該模式正是為了解決資源的頻繁分配 釋放所造成的問題。為解決上述問題,可以采用數(shù)據(jù)庫連接池技術(shù)。數(shù)據(jù)庫連接池的基本思想就是為數(shù)據(jù)庫連接建立一個(gè)“緩沖池”。預(yù)先在緩沖池中放入一定數(shù)量的連接,當(dāng)需要建立數(shù)據(jù)庫連接時(shí),只需從“緩沖池”中取出一個(gè),使用完畢之后再放回去。我們可以通過設(shè)定連接池最大連接數(shù)來防止系統(tǒng)無盡的與數(shù)據(jù)庫連接。更為重要的是我們可以通過連接池的管理機(jī)制監(jiān)視數(shù)據(jù)庫的連接的數(shù)量、使用情況,為系統(tǒng)開發(fā)、測試及性能調(diào)整提供依據(jù)。
因此,為了提高訪問數(shù)據(jù)庫數(shù)據(jù)的效率,Java應(yīng)用程序選擇了JDBC,使用ODBC-JDBC橋驅(qū)動(dòng)程序連接數(shù)據(jù)庫,從JDBC訪問ODBC數(shù)據(jù)源。
3 連接策略的實(shí)現(xiàn)
開發(fā)基于ODBC-JDBC的數(shù)據(jù)庫連接應(yīng)用程序步驟如下:①為數(shù)據(jù)庫創(chuàng)建數(shù)據(jù)源②導(dǎo)入Java.sql包③加載驅(qū)動(dòng)程序④加載將連接該數(shù)據(jù)源的驅(qū)動(dòng)程序,使用Class.forName()方法,將給定的類加載到Java虛擬機(jī)中⑤創(chuàng)建連接對(duì)象DriverManager類試圖找到一個(gè)能夠連接至URL中指定的數(shù)據(jù)庫的驅(qū)動(dòng)程序。這個(gè)類跟蹤已注冊(cè)的驅(qū)動(dòng)程序,當(dāng)調(diào)用getConnection()方法時(shí),它會(huì)搜索整個(gè)該驅(qū)動(dòng)程序列表,直到找到一個(gè)能夠連接至URL中指定的數(shù)據(jù)庫的驅(qū)動(dòng)程序。加載此驅(qū)動(dòng)程序后,使用getConnection()方法建立與數(shù)據(jù)源的連接。此方法中有3個(gè)接收參數(shù),分別表示數(shù)據(jù)源的名稱、數(shù)據(jù)源連接所使用的類型以及用戶名、密碼。
、迍(chuàng)建執(zhí)行對(duì)象并執(zhí)行
一旦建立連接,就使用該連接將SQL語句傳遞給它所連接的數(shù)據(jù)庫。然后使用Connection類的createStatement()方法創(chuàng)建Statement接口實(shí)例。執(zhí)行查詢最有效的方法是使用Statement接口中的executeQuery()方法,接收SQL查詢字段作為參數(shù),并返回包括查詢結(jié)果的ResultSet。
執(zhí)行更新數(shù)據(jù)庫,包括插入數(shù)據(jù),修改數(shù)據(jù)或者刪除數(shù)據(jù),一方面需要編寫數(shù)據(jù)更新的SQL語句,它不會(huì)將結(jié)果作為ResultSet返回,而是返回一個(gè)整數(shù),表示受該語句影響的行數(shù)。另一方面使用executeUpdate()方法。
、呓邮、存放執(zhí)行結(jié)果
使用Statement對(duì)象構(gòu)建并執(zhí)行SQL語句以執(zhí)行對(duì)數(shù)據(jù)庫的操作,操作結(jié)果返回給ResultSet對(duì)象。
、嚓P(guān)閉對(duì)象和連接
關(guān)閉ResultSet對(duì)象、Statement對(duì)象、關(guān)閉連接。
4 連接策略的優(yōu)化
4.1 連接中驅(qū)動(dòng)程序的優(yōu)化使用本地API部分Java驅(qū)動(dòng)程序的速度要比基于ODBC-JDBC橋的數(shù)據(jù)庫連接速度快,它將JDBC調(diào)用轉(zhuǎn)換成對(duì)DBMS客戶端API的調(diào)用,它使用本地?cái)?shù)據(jù)庫API的Java本地接口訪問數(shù)據(jù)庫。
與ODBC驅(qū)動(dòng)程序一樣,它也需要在客戶機(jī)上使用本地二進(jìn)制代碼,并要求安裝和配置數(shù)據(jù)庫。隨著網(wǎng)絡(luò)技術(shù)、中間件技術(shù)的縱深發(fā)展和不斷完善,使用網(wǎng)絡(luò)協(xié)議和中間件與服務(wù)器進(jìn)行通信,然后服務(wù)器將該協(xié)議和中間件轉(zhuǎn)換成特定于DBMS的方法調(diào)用,這是JDBC網(wǎng)絡(luò)純Java驅(qū)動(dòng)程序下的數(shù)據(jù)庫連接,此驅(qū)動(dòng)程序開始獨(dú)立于數(shù)據(jù)庫,將JDBC轉(zhuǎn)換成本地專有數(shù)據(jù)庫調(diào)用,還支持對(duì)多個(gè)后端數(shù)據(jù)庫進(jìn)行訪問。
4.2 執(zhí)行對(duì)象選擇的優(yōu)化
在數(shù)據(jù)庫連接過程中存在多次執(zhí)行同一操作的情況,為了提高SQL語句的接收、編譯效率,可用PreparedStatement()方法創(chuàng)建PreparedStatement對(duì)象,因?yàn)镻reparedStatement對(duì)象用于預(yù)編譯的SQL語句,可以接收一個(gè)或者多個(gè)參數(shù)作為輸入?yún)?shù),提高了效率。另外它還增添了設(shè)置值所需要的一整套方法,可以將這些方法發(fā)送到數(shù)據(jù)庫以代替參數(shù)的占位符。
4.3 連接對(duì)象的優(yōu)化
使用連接池是實(shí)現(xiàn)數(shù)據(jù)訪問優(yōu)化的重要途徑之一。如果每次Web應(yīng)用接受到請(qǐng)求,就向數(shù)據(jù)庫要求一個(gè)連接,當(dāng)執(zhí)行完就通知數(shù)據(jù)庫中斷連接,這樣的方式將會(huì)耗費(fèi)大量的時(shí)間與資源。而連接池的運(yùn)作方式是一開始向數(shù)據(jù)庫要求很多Connection連接存儲(chǔ)在一個(gè)Pool池內(nèi),讓需要的人從連接池中取Connection,等到用完之后再放回連接池,從而讓W(xué)eb應(yīng)用與數(shù)據(jù)庫之間能夠獲得最大的執(zhí)行效率。
5 結(jié)束語
數(shù)據(jù)庫連接的實(shí)現(xiàn)是數(shù)據(jù)庫軟件開發(fā)過程中必不可少的組成部分,數(shù)據(jù)庫連接的優(yōu)化關(guān)系到數(shù)據(jù)查詢、更新的執(zhí)行效率,成為衡量系統(tǒng)開發(fā)性能的重要指標(biāo),因此數(shù)據(jù)庫連接策略的實(shí)現(xiàn)和優(yōu)化是一項(xiàng)系統(tǒng)工程,值得我們?cè)陂_發(fā)實(shí)踐中不斷的探索和挖掘。
參考文獻(xiàn)
[1]王 強(qiáng).高校綜合人力資源管理系統(tǒng)的數(shù)據(jù)庫優(yōu)化策略研究[J].電腦知識(shí)與技術(shù),2010,17(10):50-51.
[2]孫鑫鴿,陳 剛,孫小玲.基于JDBC的數(shù)據(jù)庫連接池技術(shù)的研究與設(shè)計(jì)[J].計(jì)算機(jī)與信息技術(shù),2007,15(5):61-62.
[3]王秀義.基于JDBC的數(shù)據(jù)庫連接池及實(shí)現(xiàn)[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2005,22(4):43-45.
【基于ODBC-JDBC的數(shù)據(jù)庫連接策略的實(shí)現(xiàn)與優(yōu)化論文】相關(guān)文章:
優(yōu)化農(nóng)機(jī)裝備結(jié)構(gòu)的策略分析論文05-05
企業(yè)稅務(wù)管理的問題優(yōu)化策略論文02-22
公共體育教學(xué)現(xiàn)狀與優(yōu)化策略論文02-18
淺談基于RFID 的會(huì)議簽到系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)論文02-20
基于智能優(yōu)化算法的Wiener模型辨識(shí)論文提綱12-05
提升網(wǎng)站圖片的優(yōu)化效果的幾種策略淺析的論文03-23
淺析基于情感培養(yǎng)的教學(xué)策略論文12-09
企業(yè)數(shù)據(jù)庫安全防護(hù)及維護(hù)策略論文11-11
淺談基于Openstack 的網(wǎng)絡(luò)攻防實(shí)驗(yàn)平臺(tái)設(shè)計(jì)與實(shí)現(xiàn)論文02-20
醫(yī)療空間環(huán)境與優(yōu)化設(shè)計(jì)策略論文提綱11-17
- 相關(guān)推薦