Java數(shù)據(jù)庫(kù)連接技術(shù)的探討與實(shí)踐
《Java數(shù)據(jù)庫(kù)連接技術(shù)的探討與實(shí)踐》由會(huì)員分享,可在線閱讀,更多相關(guān)《Java數(shù)據(jù)庫(kù)連接技術(shù)的探討與實(shí)踐(3頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、Java數(shù)據(jù)庫(kù)連接技術(shù)的探討與實(shí)踐 摘 要:本文主要對(duì)JSP與Web數(shù)據(jù)庫(kù)連接的方法進(jìn)行分析比較,并基于Tomcat用JavaBean構(gòu)建了一個(gè)可重用的數(shù)據(jù)庫(kù)連接池。同時(shí)也討論了在多種異構(gòu)數(shù)據(jù)庫(kù)下,如何進(jìn)行多數(shù)據(jù)庫(kù)的訪問(wèn),并分析了使用Java技術(shù)下的各種方法進(jìn)行多種異構(gòu)數(shù)據(jù)庫(kù)下的數(shù)據(jù)交換。 關(guān)鍵詞:數(shù)據(jù)庫(kù);JDBC;連接池 1 引言 隨著Web技術(shù)的發(fā)展和電子商務(wù)時(shí)代的到來(lái),人們希望建立能夠根據(jù)需求生成頁(yè)面、提供用戶交互、提供后臺(tái)數(shù)據(jù)庫(kù)處理等服務(wù)的動(dòng)態(tài)網(wǎng)站。在此需求下,以Java技術(shù)為核心的JSP技術(shù)應(yīng)運(yùn)而生。在使用JSP技術(shù)開(kāi)發(fā)基于數(shù)據(jù)庫(kù)的動(dòng)態(tài)Web應(yīng)用程序
2、中,與數(shù)據(jù)庫(kù)的交互已成為一個(gè)重要組成部分。與數(shù)據(jù)庫(kù)的交互過(guò)程中,數(shù)據(jù)庫(kù)連接是一種重要的資源,數(shù)據(jù)庫(kù)連接的管理性能會(huì)影響到整個(gè)應(yīng)用程序的可伸縮性和健壯性?,F(xiàn)在的各種數(shù)據(jù)庫(kù)應(yīng)用,由于技術(shù)、歷史等因素,往往在一個(gè)大的部門中并存有多個(gè)應(yīng)用系統(tǒng)。這些應(yīng)用系統(tǒng)可能分散于不同的網(wǎng)絡(luò)節(jié)點(diǎn)、基于不同的操作平臺(tái)、使用不同的數(shù)據(jù)庫(kù)管理系統(tǒng),且各子系統(tǒng)封閉運(yùn)行,自成一體,這樣給不同部門的信息資源共享帶來(lái)困難。如何在不改變?cè)瓉?lái)系統(tǒng)的內(nèi)部信息的前提下,完成不同數(shù)據(jù)庫(kù)系統(tǒng)間的數(shù)據(jù)訪問(wèn)和交換是值得研究的問(wèn)題。 近年來(lái),隨著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)的三層開(kāi)發(fā)模式逐漸取代C/S架構(gòu)的開(kāi)發(fā)模式,成為開(kāi)發(fā)企業(yè)級(jí)應(yīng)用和電子商務(wù)普遍采用的技術(shù)。在Web應(yīng)用開(kāi)發(fā)的早期,主要使用的技術(shù)是CGI、ASP、PHP等。之后,Sun公司推出了基于Java語(yǔ)言的servlet+Jsp+JavaBean技術(shù)。相比傳統(tǒng)的開(kāi)發(fā)技術(shù),它具有跨平臺(tái)、安全、有效、可移植等特性,這使其更便于使用和開(kāi)發(fā)。 2 Java中傳統(tǒng)的數(shù)據(jù)庫(kù)連接技術(shù) 在Java語(yǔ)言中,JDBC是應(yīng)用程序與數(shù)據(jù)庫(kù)溝通的橋梁,JDBC是一種“開(kāi)放”的方案,它為數(shù)據(jù)庫(kù)應(yīng)用開(kāi)發(fā)人員與數(shù)據(jù)庫(kù)前臺(tái)工具開(kāi)發(fā)人員提供了一種標(biāo)準(zhǔn)的應(yīng)用程序設(shè)計(jì)接口,使開(kāi)發(fā)人員可以用純Java語(yǔ)言編
4、寫完整的數(shù)據(jù)庫(kù)應(yīng)用程序。JDBC提供兩種API,分別是面向開(kāi)發(fā)人員的API和面向底層的JDBC驅(qū)動(dòng)程序API,底層主要通過(guò)直接的JDBC驅(qū)動(dòng)和JDBC-ODBC橋驅(qū)動(dòng)實(shí)現(xiàn)與數(shù)據(jù)庫(kù)的連接。一般來(lái)說(shuō),JDBC提供了一種基準(zhǔn).據(jù)此可以構(gòu)建更高級(jí)的工具和接口,使數(shù)據(jù)庫(kù)開(kāi)發(fā)人員能夠編寫數(shù)據(jù)庫(kù)應(yīng)用程序。 傳統(tǒng)的基于JDBC的數(shù)據(jù)庫(kù)訪問(wèn)方式一般有四種:JDBC—ODBC橋接驅(qū)動(dòng)程序、本地 API部分Java驅(qū)動(dòng)程序、數(shù)據(jù)庫(kù)中間件的純Java驅(qū)動(dòng)程序、純Java驅(qū)動(dòng)程序。 2.1 JDBC—ODBC橋接驅(qū)動(dòng)程序 這類驅(qū)動(dòng)將JDBC API作為到另一個(gè)數(shù)據(jù)訪問(wèn)API的映射來(lái)實(shí)現(xiàn)。這類驅(qū)動(dòng)程序通常依賴本地
5、庫(kù),可移植性受到限制。JDBC—ODBC橋是將JDBC操作轉(zhuǎn)換為ODBC操作來(lái)實(shí)現(xiàn)JDBC操作,ODBC是目前應(yīng)用最為廣泛的數(shù)據(jù)庫(kù)訪問(wèn)API,因此通過(guò)JDBC—ODBC橋幾乎可以連接任何一種數(shù)據(jù)庫(kù),但是需要客戶端預(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)用,通過(guò)數(shù)據(jù)庫(kù)請(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ù)庫(kù)廠商提供的代碼庫(kù)。 2.3
6、 數(shù)據(jù)庫(kù)中間件的純Java驅(qū)動(dòng)程序 這種驅(qū)動(dòng)程序?qū)DBC調(diào)用翻譯成與數(shù)據(jù)庫(kù)無(wú)關(guān)的網(wǎng)絡(luò)協(xié)議,利用中間件將客戶端連接到不同類型的數(shù)據(jù)庫(kù)系統(tǒng)。使用這種驅(qū)動(dòng)程序不需要在客戶端安裝其他軟件,并且能訪問(wèn)多種數(shù)據(jù)庫(kù)。因此,這種驅(qū)動(dòng)程序是與平臺(tái)無(wú)關(guān)的,并且與用戶訪問(wèn)的數(shù)據(jù)庫(kù)無(wú)關(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ù)庫(kù)系統(tǒng)規(guī)范的請(qǐng)求,與數(shù)據(jù)庫(kù)服務(wù)器通信。這種驅(qū)動(dòng)的執(zhí)行效率是非常高,與平臺(tái)無(wú)關(guān),但與特定的數(shù)據(jù)庫(kù)有關(guān)。 利用JDBC訪問(wèn)數(shù)據(jù)庫(kù)的過(guò)程主
7、要有以下四步:①裝載數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序。②訪問(wèn)數(shù)據(jù)庫(kù),執(zhí)行SQL語(yǔ)句。③處理數(shù)據(jù)庫(kù)返回結(jié)果。④斷開(kāi)數(shù)據(jù)庫(kù)連接。 JDBC作為一種數(shù)據(jù)庫(kù)訪問(wèn)技術(shù),具有簡(jiǎn)單易用的優(yōu)點(diǎn)。但使用這種模式進(jìn)行Web應(yīng)用程序開(kāi)發(fā),存在很多問(wèn)題:首先,每一次Web請(qǐng)求都要建立一次數(shù)據(jù)庫(kù)連接。建立連接是一個(gè)費(fèi)時(shí)的活動(dòng),每次都得花費(fèi)0.05s~1s的時(shí)間,而且系統(tǒng)還要分配內(nèi)存資源。這個(gè)時(shí)間對(duì)于一次或幾次數(shù)據(jù)庫(kù)操作,或許感覺(jué)不出系統(tǒng)有多大的開(kāi)銷??墒菍?duì)于現(xiàn)在的Web應(yīng)用,尤其是大型電子商務(wù)網(wǎng)站,同時(shí)有幾百人甚至幾千人在線是很正常的事。在這種情況下,頻繁的進(jìn)行數(shù)據(jù)庫(kù)連接操作勢(shì)必占用很多的系統(tǒng)資源,網(wǎng)站的響應(yīng)速度必定下降,嚴(yán)重的甚至
8、會(huì)造成服務(wù)器的崩潰。其次,對(duì)于每一次數(shù)據(jù)庫(kù)連接,使用完后都得斷開(kāi)。否則,如果程序出現(xiàn)異常而未能關(guān)閉,將會(huì)導(dǎo)致數(shù)據(jù)庫(kù)系統(tǒng)中的內(nèi)存泄漏,最終將不得不重啟數(shù)據(jù)庫(kù)。還有,這種開(kāi)發(fā)不能控制被創(chuàng)建的連接對(duì)象數(shù),系統(tǒng)資源會(huì)被毫無(wú)顧及的分配出去,如連接過(guò)多,也可能導(dǎo)致內(nèi)存泄漏,服務(wù)器崩潰。 3 數(shù)據(jù)庫(kù)連接池技術(shù) 3.1 數(shù)據(jù)庫(kù)連接池的基本原理 為解決上述問(wèn)題,可以采用數(shù)據(jù)庫(kù)連接池技術(shù)。數(shù)據(jù)庫(kù)連接池的基本思想就是為數(shù)據(jù)庫(kù)連接建立一個(gè)“緩沖池”。預(yù)先在緩沖池中放入一定數(shù)量的連接,當(dāng)需要建立數(shù)據(jù)庫(kù)連接時(shí),只需從“緩沖池”中取出一個(gè),使用完畢之后再放回去。我們可以通過(guò)設(shè)定連接池最大連接數(shù)來(lái)防止系統(tǒng)無(wú)盡的與數(shù)據(jù)庫(kù)連
9、接。更為重要的是我們可以通過(guò)連接池的管理機(jī)制監(jiān)視數(shù)據(jù)庫(kù)的連接的數(shù)量與使用情況,為系統(tǒng)開(kāi)發(fā)測(cè)試及性能調(diào)整提供依據(jù)。 3.2 用JavaBean實(shí)現(xiàn)連接池的訪問(wèn) 目前的JDBC驅(qū)動(dòng)中基本都包含了DataSource接口的實(shí)現(xiàn),但不少都沒(méi)有包含基于DataSource的數(shù)據(jù)庫(kù)連接池的實(shí)現(xiàn),如SQLServer 2000的JDBC驅(qū)動(dòng)中就沒(méi)有這種數(shù)據(jù)庫(kù)連接池。但在當(dāng)前的主流應(yīng)用服務(wù)器上都包含了基于DataSource的數(shù)據(jù)庫(kù)連接池的實(shí)現(xiàn)。如:Weblogic、Websphere、Tomcat等。本文以Tomcat5.5+Sql Server 2000為平臺(tái)來(lái)研究如何用JavaBean實(shí)現(xiàn)Sql S
10、erver 2000數(shù)據(jù)庫(kù)連接池。 首先將Sql Server 2000的JDBC的驅(qū)動(dòng)文件(jar)放到Tomcat的common/lib目錄下,然后配置Tomcat。在Tomcat的serverv.xml和content.xml中配置如下示例代碼: 4 多數(shù)據(jù)庫(kù)系統(tǒng)的Java解決方案 眾所周知,Java技術(shù)是全新的編程技術(shù),它具有平臺(tái)無(wú)關(guān)性、面向?qū)ο?、安全、高性能、分布式,多線程等特點(diǎn),使Java成為當(dāng)前最為類型的編程語(yǔ)言和平臺(tái)。對(duì)于多數(shù)據(jù)庫(kù)系統(tǒng)聯(lián)合訪問(wèn)和數(shù)據(jù)交換,使用Java技術(shù)可以解決不同的操作系統(tǒng)和不同的數(shù)據(jù)庫(kù)管理系統(tǒng)之間的數(shù)據(jù)處理。 4.1 使用Java Bean技術(shù)實(shí)
11、現(xiàn)多數(shù)據(jù)庫(kù)的訪問(wèn) 對(duì)于基于Web的多數(shù)據(jù)庫(kù)訪問(wèn),Java Bean技術(shù)可以提供一個(gè)比較強(qiáng)大、靈活的解決方案。首先構(gòu)造多個(gè)Java Bean,在這些模型組件里,我們要處理數(shù)據(jù)庫(kù)的連接、定義,查找、插入、刪除操作等方法,并要實(shí)現(xiàn)多線程,然后構(gòu)造編寫調(diào)用Java Bean的Servlet,這樣可以實(shí)現(xiàn)對(duì)多數(shù)據(jù)庫(kù)的訪問(wèn)。Java Bean的結(jié)構(gòu)如下: public class DatabaseConnectBean { 定義數(shù)據(jù)庫(kù)連接的成員; 定義連接的方法{ } } 在Servlet中調(diào)用Java Bean的過(guò)程為: 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(……); }} 從上述的過(guò)程和語(yǔ)句我們可以發(fā)現(xiàn),使用Servlet技術(shù)可以訪問(wèn)各種不同類型的數(shù)據(jù)庫(kù),但是使用Servlet技術(shù)下的Java Bean技術(shù)要保證數(shù)據(jù)庫(kù)數(shù)據(jù)的一致性,應(yīng)在Java Bean中我們可以使用Java的線程技術(shù)中的同步等方法來(lái)實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的連接、操作,但這樣將加大程序員的編程實(shí)現(xiàn)。所以使用Servlet技術(shù)下的Java Bean能同時(shí)對(duì)多個(gè)數(shù)據(jù)庫(kù)實(shí)體的訪問(wèn),但實(shí)現(xiàn)起來(lái)不方便。 4.2 使用EJB技術(shù)實(shí)現(xiàn)多數(shù)據(jù)庫(kù)的訪問(wèn) 對(duì)于多數(shù)據(jù)庫(kù)訪問(wèn),EJB技術(shù)可以提供一個(gè)比較強(qiáng)大、靈活的解決方案。首先構(gòu)造多個(gè)會(huì)話Bean,在這些模型組件里,我們要處理數(shù)據(jù)庫(kù)的連接
14、、定義,查找、插入、刪除操作等方法,然后創(chuàng)建和部署EJB,這樣可以實(shí)現(xiàn)對(duì)多數(shù)據(jù)庫(kù)的訪問(wèn)。會(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ù)庫(kù)JDNI名字); //建立數(shù)據(jù)庫(kù)連接 Connection conn=null; try{ conn ds.getConnection(數(shù)據(jù)庫(kù)用戶名,數(shù)據(jù)庫(kù)用戶密碼); //進(jìn)行數(shù)據(jù)庫(kù)數(shù)據(jù)的操作 } }} 從上述的過(guò)程和語(yǔ)句我們可以發(fā)現(xiàn),使用EJB技術(shù)可以訪問(wèn)各種不同類型的數(shù)據(jù)庫(kù),而且支持?jǐn)?shù)據(jù)庫(kù)的“事務(wù)”的機(jī)制,這樣使對(duì)數(shù)據(jù)的處理能夠保證數(shù)據(jù)的一致性。所以使用EJB技術(shù)能實(shí)現(xiàn)對(duì)多個(gè)數(shù)據(jù)庫(kù)的訪問(wèn),而且安全性、持續(xù)、事物、并行性和資源的管理由容器來(lái)管理,這樣使編程具有簡(jiǎn)單性。 5 結(jié)束
16、語(yǔ) 在使用JDBC進(jìn)行與數(shù)據(jù)庫(kù)有關(guān)的應(yīng)用開(kāi)發(fā)中,數(shù)據(jù)庫(kù)連接的管理是一個(gè)難點(diǎn)。很多時(shí)候,連接的混亂管理所造成的系統(tǒng)資源開(kāi)銷過(guò)大成為制約大型企業(yè)級(jí)應(yīng)用效率的瓶頸。對(duì)于眾多用戶訪問(wèn)的Web應(yīng)用,采用數(shù)據(jù)庫(kù)連接技術(shù)的系統(tǒng)在效率和穩(wěn)定性上比采用傳統(tǒng)的其他方式的系統(tǒng)要好很多。本文闡述了使用JDBC訪問(wèn)數(shù)據(jù)庫(kù)的技術(shù)?討論了基于連接池技術(shù)的數(shù)據(jù)庫(kù)連接管理的關(guān)鍵問(wèn)題并給出了一個(gè)實(shí)現(xiàn)模型。文章所給出的是連接池管理程序的一種基本模式,為提高系統(tǒng)的整體性能,在此基礎(chǔ)上還可以進(jìn)行很多有意義的擴(kuò)展。 EJB技術(shù)是解決異構(gòu)數(shù)據(jù)庫(kù)環(huán)境下的多數(shù)據(jù)庫(kù)信息處理一種有效的方法。它不但可以解決數(shù)據(jù)庫(kù)異構(gòu)的問(wèn)題,更是解決操作系統(tǒng)異構(gòu)的最有效的方法。這樣可以達(dá)到不同信息資源的共享及信息的綜合統(tǒng)計(jì)查詢,這也是企事業(yè)單位迫切要解決的實(shí)際問(wèn)題。我們認(rèn)為EJB技術(shù)能更好的解決異構(gòu)數(shù)據(jù)庫(kù)環(huán)境下的電子商務(wù)和電子政務(wù)方面的信息交換問(wèn)題。 參考文獻(xiàn): 【1】崔瑩峰,王洪.數(shù)據(jù)庫(kù)連接池技術(shù)及其在Web系統(tǒng)開(kāi)發(fā)中的應(yīng)用.鐵路計(jì)算機(jī)應(yīng)用,2005(02) 【2】周彩蘭,陳才賢.基于Java的Web數(shù)據(jù)庫(kù)連接池高效管理策略.武漢理工大學(xué)學(xué)報(bào),2004(05) 【3】羅榮,唐學(xué)兵;基于JDBC的數(shù)據(jù)庫(kù)連接池的設(shè)計(jì)與實(shí)現(xiàn).計(jì)算機(jī)工程,2004(09)
- 溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 初中生物對(duì)照實(shí)驗(yàn)專題復(fù)習(xí)課件
- 初中物理資源九年級(jí)第十五單元課件串并聯(lián)識(shí)別
- 咯血與嘔血課件
- What's_your_number_課件
- 外研版七下Module3Unit1(教育精品)
- 浙美版三年級(jí)上冊(cè)美術(shù)第15課-剪雪花教學(xué)ppt課件
- 蘇教版六年級(jí)下冊(cè)數(shù)學(xué)正比例和反比例的意義課件
- 蘇教版五下《單式折線統(tǒng)計(jì)圖》教研課件
- 固態(tài)相變概論
- 三角形全等的判定復(fù)習(xí)-課件2
- 太陽(yáng)能發(fā)展趨勢(shì)課件
- 道路工程監(jiān)理最新規(guī)劃范本課件
- SPC及CPK教程(理論篇)課件
- Travel-Plan旅行計(jì)劃-PPT
- 新冠肺炎疫情期間醫(yī)務(wù)人員防護(hù)技術(shù)指南