Java數(shù)據(jù)庫連接技術(shù)的探討與實(shí)踐
《Java數(shù)據(jù)庫連接技術(shù)的探討與實(shí)踐》由會(huì)員分享,可在線閱讀,更多相關(guān)《Java數(shù)據(jù)庫連接技術(shù)的探討與實(shí)踐(3頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、Java數(shù)據(jù)庫連接技術(shù)的探討與實(shí)踐 摘 要:本文主要對(duì)JSP與Web數(shù)據(jù)庫連接的方法進(jìn)行分析比較,并基于Tomcat用JavaBean構(gòu)建了一個(gè)可重用的數(shù)據(jù)庫連接池。同時(shí)也討論了在多種異構(gòu)數(shù)據(jù)庫下,如何進(jìn)行多數(shù)據(jù)庫的訪問,并分析了使用Java技術(shù)下的各種方法進(jìn)行多種異構(gòu)數(shù)據(jù)庫下的數(shù)據(jù)交換。 關(guān)鍵詞:數(shù)據(jù)庫;JDBC;連接池 1 引言 隨著Web技術(shù)的發(fā)展和電子商務(wù)時(shí)代的到來,人們希望建立能夠根據(jù)需求生成頁面、提供用戶交互、提供后臺(tái)數(shù)據(jù)庫處理等服務(wù)的動(dòng)態(tài)網(wǎng)站。在此需求下,以Java技術(shù)為核心的JSP技術(shù)應(yīng)運(yùn)而生。在使用JSP技術(shù)開發(fā)基于數(shù)據(jù)庫的動(dòng)態(tài)Web應(yīng)用程序
2、中,與數(shù)據(jù)庫的交互已成為一個(gè)重要組成部分。與數(shù)據(jù)庫的交互過程中,數(shù)據(jù)庫連接是一種重要的資源,數(shù)據(jù)庫連接的管理性能會(huì)影響到整個(gè)應(yīng)用程序的可伸縮性和健壯性?,F(xiàn)在的各種數(shù)據(jù)庫應(yīng)用,由于技術(shù)、歷史等因素,往往在一個(gè)大的部門中并存有多個(gè)應(yīng)用系統(tǒng)。這些應(yīng)用系統(tǒng)可能分散于不同的網(wǎng)絡(luò)節(jié)點(diǎn)、基于不同的操作平臺(tái)、使用不同的數(shù)據(jù)庫管理系統(tǒng),且各子系統(tǒng)封閉運(yùn)行,自成一體,這樣給不同部門的信息資源共享帶來困難。如何在不改變?cè)瓉硐到y(tǒng)的內(nèi)部信息的前提下,完成不同數(shù)據(jù)庫系統(tǒng)間的數(shù)據(jù)訪問和交換是值得研究的問題。 近年來,隨著Internet/Intranet建網(wǎng)技術(shù)的飛速發(fā)展和在世界范圍內(nèi)的迅速普及,計(jì)算機(jī)應(yīng)用程序已從傳統(tǒng)的桌
3、面應(yīng)用轉(zhuǎn)到Web應(yīng)用?;贐/S架構(gòu)的三層開發(fā)模式逐漸取代C/S架構(gòu)的開發(fā)模式,成為開發(fā)企業(yè)級(jí)應(yīng)用和電子商務(wù)普遍采用的技術(shù)。在Web應(yīng)用開發(fā)的早期,主要使用的技術(shù)是CGI、ASP、PHP等。之后,Sun公司推出了基于Java語言的servlet+Jsp+JavaBean技術(shù)。相比傳統(tǒng)的開發(fā)技術(shù),它具有跨平臺(tái)、安全、有效、可移植等特性,這使其更便于使用和開發(fā)。 2 Java中傳統(tǒng)的數(shù)據(jù)庫連接技術(shù) 在Java語言中,JDBC是應(yīng)用程序與數(shù)據(jù)庫溝通的橋梁,JDBC是一種“開放”的方案,它為數(shù)據(jù)庫應(yīng)用開發(fā)人員與數(shù)據(jù)庫前臺(tái)工具開發(fā)人員提供了一種標(biāo)準(zhǔn)的應(yīng)用程序設(shè)計(jì)接口,使開發(fā)人員可以用純Java語言編
4、寫完整的數(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ù)庫的連接。一般來說,JDBC提供了一種基準(zhǔn).據(jù)此可以構(gòu)建更高級(jí)的工具和接口,使數(shù)據(jù)庫開發(fā)人員能夠編寫數(shù)據(jù)庫應(yīng)用程序。 傳統(tǒng)的基于JDBC的數(shù)據(jù)庫訪問方式一般有四種:JDBC—ODBC橋接驅(qū)動(dòng)程序、本地 API部分Java驅(qū)動(dòng)程序、數(shù)據(jù)庫中間件的純Java驅(qū)動(dòng)程序、純Java驅(qū)動(dòng)程序。 2.1 JDBC—ODBC橋接驅(qū)動(dòng)程序 這類驅(qū)動(dòng)將JDBC API作為到另一個(gè)數(shù)據(jù)訪問API的映射來實(shí)現(xiàn)。這類驅(qū)動(dòng)程序通常依賴本地
5、庫,可移植性受到限制。JDBC—ODBC橋是將JDBC操作轉(zhuǎn)換為ODBC操作來實(shí)現(xiàn)JDBC操作,ODBC是目前應(yīng)用最為廣泛的數(shù)據(jù)庫訪問API,因此通過JDBC—ODBC橋幾乎可以連接任何一種數(shù)據(jù)庫,但是需要客戶端預(yù)裝ODBC驅(qū)動(dòng)和配置ODBC數(shù)據(jù)源。執(zhí)行效率低,跨平臺(tái)性差,常用于Windows平臺(tái)下。 2.2 本地API部分Java驅(qū)動(dòng)程序 這類驅(qū)動(dòng)把對(duì)JDBC的調(diào)用轉(zhuǎn)換成本地的API調(diào)用,通過數(shù)據(jù)庫請(qǐng)求把結(jié)果返回給JDBC驅(qū)動(dòng)器,JDBC驅(qū)動(dòng)器再將結(jié)果格式轉(zhuǎn)化為JDBC標(biāo)準(zhǔn)形式,并將結(jié)果返回給客戶端。這種驅(qū)動(dòng)執(zhí)行效率比第一種有所提高,但仍然需要在客戶端加載數(shù)據(jù)庫廠商提供的代碼庫。 2.3
6、 數(shù)據(jù)庫中間件的純Java驅(qū)動(dòng)程序 這種驅(qū)動(dòng)程序?qū)DBC調(diào)用翻譯成與數(shù)據(jù)庫無關(guān)的網(wǎng)絡(luò)協(xié)議,利用中間件將客戶端連接到不同類型的數(shù)據(jù)庫系統(tǒng)。使用這種驅(qū)動(dòng)程序不需要在客戶端安裝其他軟件,并且能訪問多種數(shù)據(jù)庫。因此,這種驅(qū)動(dòng)程序是與平臺(tái)無關(guān)的,并且與用戶訪問的數(shù)據(jù)庫無關(guān)。特別適合在多層結(jié)構(gòu)應(yīng)用軟件體系結(jié)構(gòu)中使用。 2.4 純Java驅(qū)動(dòng)程序 這類驅(qū)動(dòng)也是完全由Java實(shí)現(xiàn)的,不需要加載任何軟件或驅(qū)動(dòng),也不需要任何中介軟件,直接把JDBC調(diào)用轉(zhuǎn)換為符合相關(guān)數(shù)據(jù)庫系統(tǒng)規(guī)范的請(qǐng)求,與數(shù)據(jù)庫服務(wù)器通信。這種驅(qū)動(dòng)的執(zhí)行效率是非常高,與平臺(tái)無關(guān),但與特定的數(shù)據(jù)庫有關(guān)。 利用JDBC訪問數(shù)據(jù)庫的過程主
7、要有以下四步:①裝載數(shù)據(jù)庫驅(qū)動(dòng)程序。②訪問數(shù)據(jù)庫,執(zhí)行SQL語句。③處理數(shù)據(jù)庫返回結(jié)果。④斷開數(shù)據(jù)庫連接。 JDBC作為一種數(shù)據(jù)庫訪問技術(shù),具有簡單易用的優(yōu)點(diǎn)。但使用這種模式進(jìn)行Web應(yīng)用程序開發(fā),存在很多問題:首先,每一次Web請(qǐng)求都要建立一次數(shù)據(jù)庫連接。建立連接是一個(gè)費(fèi)時(shí)的活動(dòng),每次都得花費(fèi)0.05s~1s的時(shí)間,而且系統(tǒng)還要分配內(nèi)存資源。這個(gè)時(shí)間對(duì)于一次或幾次數(shù)據(jù)庫操作,或許感覺不出系統(tǒng)有多大的開銷??墒菍?duì)于現(xiàn)在的Web應(yīng)用,尤其是大型電子商務(wù)網(wǎng)站,同時(shí)有幾百人甚至幾千人在線是很正常的事。在這種情況下,頻繁的進(jìn)行數(shù)據(jù)庫連接操作勢(shì)必占用很多的系統(tǒng)資源,網(wǎng)站的響應(yīng)速度必定下降,嚴(yán)重的甚至
8、會(huì)造成服務(wù)器的崩潰。其次,對(duì)于每一次數(shù)據(jù)庫連接,使用完后都得斷開。否則,如果程序出現(xiàn)異常而未能關(guān)閉,將會(huì)導(dǎo)致數(shù)據(jù)庫系統(tǒng)中的內(nèi)存泄漏,最終將不得不重啟數(shù)據(jù)庫。還有,這種開發(fā)不能控制被創(chuàng)建的連接對(duì)象數(shù),系統(tǒng)資源會(huì)被毫無顧及的分配出去,如連接過多,也可能導(dǎo)致內(nèi)存泄漏,服務(wù)器崩潰。 3 數(shù)據(jù)庫連接池技術(shù) 3.1 數(shù)據(jù)庫連接池的基本原理 為解決上述問題,可以采用數(shù)據(jù)庫連接池技術(shù)。數(shù)據(jù)庫連接池的基本思想就是為數(shù)據(jù)庫連接建立一個(gè)“緩沖池”。預(yù)先在緩沖池中放入一定數(shù)量的連接,當(dāng)需要建立數(shù)據(jù)庫連接時(shí),只需從“緩沖池”中取出一個(gè),使用完畢之后再放回去。我們可以通過設(shè)定連接池最大連接數(shù)來防止系統(tǒng)無盡的與數(shù)據(jù)庫連
9、接。更為重要的是我們可以通過連接池的管理機(jī)制監(jiān)視數(shù)據(jù)庫的連接的數(shù)量與使用情況,為系統(tǒng)開發(fā)測(cè)試及性能調(diào)整提供依據(jù)。 3.2 用JavaBean實(shí)現(xiàn)連接池的訪問 目前的JDBC驅(qū)動(dòng)中基本都包含了DataSource接口的實(shí)現(xiàn),但不少都沒有包含基于DataSource的數(shù)據(jù)庫連接池的實(shí)現(xiàn),如SQLServer 2000的JDBC驅(qū)動(dòng)中就沒有這種數(shù)據(jù)庫連接池。但在當(dāng)前的主流應(yīng)用服務(wù)器上都包含了基于DataSource的數(shù)據(jù)庫連接池的實(shí)現(xiàn)。如:Weblogic、Websphere、Tomcat等。本文以Tomcat5.5+Sql Server 2000為平臺(tái)來研究如何用JavaBean實(shí)現(xiàn)Sql S
10、erver 2000數(shù)據(jù)庫連接池。 首先將Sql Server 2000的JDBC的驅(qū)動(dòng)文件(jar)放到Tomcat的common/lib目錄下,然后配置Tomcat。在Tomcat的serverv.xml和content.xml中配置如下示例代碼: 4 多數(shù)據(jù)庫系統(tǒng)的Java解決方案 眾所周知,Java技術(shù)是全新的編程技術(shù),它具有平臺(tái)無關(guān)性、面向?qū)ο?、安全、高性能、分布式,多線程等特點(diǎn),使Java成為當(dāng)前最為類型的編程語言和平臺(tái)。對(duì)于多數(shù)據(jù)庫系統(tǒng)聯(lián)合訪問和數(shù)據(jù)交換,使用Java技術(shù)可以解決不同的操作系統(tǒng)和不同的數(shù)據(jù)庫管理系統(tǒng)之間的數(shù)據(jù)處理。 4.1 使用Java Bean技術(shù)實(shí)
11、現(xiàn)多數(shù)據(jù)庫的訪問 對(duì)于基于Web的多數(shù)據(jù)庫訪問,Java Bean技術(shù)可以提供一個(gè)比較強(qiáng)大、靈活的解決方案。首先構(gòu)造多個(gè)Java Bean,在這些模型組件里,我們要處理數(shù)據(jù)庫的連接、定義,查找、插入、刪除操作等方法,并要實(shí)現(xiàn)多線程,然后構(gòu)造編寫調(diào)用Java Bean的Servlet,這樣可以實(shí)現(xiàn)對(duì)多數(shù)據(jù)庫的訪問。Java Bean的結(jié)構(gòu)如下: public class DatabaseConnectBean { 定義數(shù)據(jù)庫連接的成員; 定義連接的方法{ } } 在Servlet中調(diào)用Java Bean的過程為: public class UsedatabaseBea
12、n extends HttpServlet{ public void doGet(httpServletRequest req,HttpServletResponse resp) throws ServletException,IOException{ …… } public void doPost(httpServletRequest req,HttpServletResponse resp) throws ServletException,IOException{//創(chuàng)建Java Bean的對(duì)象 DatabaseConnectBean conBean=new DatabaseCon
13、nectBean(……); }} 從上述的過程和語句我們可以發(fā)現(xiàn),使用Servlet技術(shù)可以訪問各種不同類型的數(shù)據(jù)庫,但是使用Servlet技術(shù)下的Java Bean技術(shù)要保證數(shù)據(jù)庫數(shù)據(jù)的一致性,應(yīng)在Java Bean中我們可以使用Java的線程技術(shù)中的同步等方法來實(shí)現(xiàn)對(duì)數(shù)據(jù)庫的連接、操作,但這樣將加大程序員的編程實(shí)現(xiàn)。所以使用Servlet技術(shù)下的Java Bean能同時(shí)對(duì)多個(gè)數(shù)據(jù)庫實(shí)體的訪問,但實(shí)現(xiàn)起來不方便。 4.2 使用EJB技術(shù)實(shí)現(xiàn)多數(shù)據(jù)庫的訪問 對(duì)于多數(shù)據(jù)庫訪問,EJB技術(shù)可以提供一個(gè)比較強(qiáng)大、靈活的解決方案。首先構(gòu)造多個(gè)會(huì)話Bean,在這些模型組件里,我們要處理數(shù)據(jù)庫的連接
14、、定義,查找、插入、刪除操作等方法,然后創(chuàng)建和部署EJB,這樣可以實(shí)現(xiàn)對(duì)多數(shù)據(jù)庫的訪問。會(huì)話Bean的結(jié)構(gòu)如下: public class DatabaseConnectSessionBean implements javax.ejb.SessionBean{ public int checkUserLogin(String userid,String password) throw NameingException,SQLException { …… //得到初始上下文 InitialContext ic=new InitialContext(); //獲得數(shù)據(jù)源 Da
15、taSource ds=(DataSource) ic.lookup(數(shù)據(jù)庫JDNI名字); //建立數(shù)據(jù)庫連接 Connection conn=null; try{ conn ds.getConnection(數(shù)據(jù)庫用戶名,數(shù)據(jù)庫用戶密碼); //進(jìn)行數(shù)據(jù)庫數(shù)據(jù)的操作 } }} 從上述的過程和語句我們可以發(fā)現(xiàn),使用EJB技術(shù)可以訪問各種不同類型的數(shù)據(jù)庫,而且支持?jǐn)?shù)據(jù)庫的“事務(wù)”的機(jī)制,這樣使對(duì)數(shù)據(jù)的處理能夠保證數(shù)據(jù)的一致性。所以使用EJB技術(shù)能實(shí)現(xiàn)對(duì)多個(gè)數(shù)據(jù)庫的訪問,而且安全性、持續(xù)、事物、并行性和資源的管理由容器來管理,這樣使編程具有簡單性。 5 結(jié)束
16、語 在使用JDBC進(jìn)行與數(shù)據(jù)庫有關(guān)的應(yīng)用開發(fā)中,數(shù)據(jù)庫連接的管理是一個(gè)難點(diǎn)。很多時(shí)候,連接的混亂管理所造成的系統(tǒng)資源開銷過大成為制約大型企業(yè)級(jí)應(yīng)用效率的瓶頸。對(duì)于眾多用戶訪問的Web應(yīng)用,采用數(shù)據(jù)庫連接技術(shù)的系統(tǒng)在效率和穩(wěn)定性上比采用傳統(tǒng)的其他方式的系統(tǒng)要好很多。本文闡述了使用JDBC訪問數(shù)據(jù)庫的技術(shù)?討論了基于連接池技術(shù)的數(shù)據(jù)庫連接管理的關(guān)鍵問題并給出了一個(gè)實(shí)現(xiàn)模型。文章所給出的是連接池管理程序的一種基本模式,為提高系統(tǒng)的整體性能,在此基礎(chǔ)上還可以進(jìn)行很多有意義的擴(kuò)展。 EJB技術(shù)是解決異構(gòu)數(shù)據(jù)庫環(huán)境下的多數(shù)據(jù)庫信息處理一種有效的方法。它不但可以解決數(shù)據(jù)庫異構(gòu)的問題,更是解決操作系統(tǒng)異構(gòu)的最有效的方法。這樣可以達(dá)到不同信息資源的共享及信息的綜合統(tǒng)計(jì)查詢,這也是企事業(yè)單位迫切要解決的實(shí)際問題。我們認(rèn)為EJB技術(shù)能更好的解決異構(gòu)數(shù)據(jù)庫環(huán)境下的電子商務(wù)和電子政務(wù)方面的信息交換問題。 參考文獻(xiàn): 【1】崔瑩峰,王洪.數(shù)據(jù)庫連接池技術(shù)及其在Web系統(tǒng)開發(fā)中的應(yīng)用.鐵路計(jì)算機(jī)應(yīng)用,2005(02) 【2】周彩蘭,陳才賢.基于Java的Web數(shù)據(jù)庫連接池高效管理策略.武漢理工大學(xué)學(xué)報(bào),2004(05) 【3】羅榮,唐學(xué)兵;基于JDBC的數(shù)據(jù)庫連接池的設(shè)計(jì)與實(shí)現(xiàn).計(jì)算機(jī)工程,2004(09)
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年防凍教育安全教育班會(huì)全文PPT
- 2025年寒假安全教育班會(huì)全文PPT
- 初中2025年冬季防溺水安全教育全文PPT
- 初中臘八節(jié)2024年專題PPT
- 主播直播培訓(xùn)提升人氣的方法正確的直播方式如何留住游客
- XX地區(qū)機(jī)關(guān)工委2024年度年終黨建工作總結(jié)述職匯報(bào)
- 心肺復(fù)蘇培訓(xùn)(心臟驟停的臨床表現(xiàn)與診斷)
- 我的大學(xué)生活介紹
- XX單位2024年終專題組織生活會(huì)理論學(xué)習(xí)理論學(xué)習(xí)強(qiáng)黨性凝心聚力建新功
- 2024年XX單位個(gè)人述職述廉報(bào)告
- 一文解讀2025中央經(jīng)濟(jì)工作會(huì)議精神(使社會(huì)信心有效提振經(jīng)濟(jì)明顯回升)
- 2025職業(yè)生涯規(guī)劃報(bào)告自我評(píng)估職業(yè)探索目標(biāo)設(shè)定發(fā)展策略
- 2024年度XX縣縣委書記個(gè)人述職報(bào)告及2025年工作計(jì)劃
- 寒假計(jì)劃中學(xué)生寒假計(jì)劃安排表(規(guī)劃好寒假的每個(gè)階段)
- 中央經(jīng)濟(jì)工作會(huì)議九大看點(diǎn)學(xué)思想強(qiáng)黨性重實(shí)踐建新功