摘要 分析傳統模式下JDBC訪問數據庫的缺陷,介紹數據庫連接池的基本概念與工作原理,并闡述使用連接池的數據庫訪問機制的優點,最后給出JDBC數據庫連接池在JSP應用程序中的實現方法。
關鍵詞 JDBC;數據庫連接池;JSP
中圖分類號:TP311.1 文獻標識碼:B 文章編號:1671-489X(2011)18-0110-02
JDBC Database-connection Technique and Application in JSP//Xiu Yongfu
Abstract This article analyzes the default of the database access in the traditional mode, the concept and the principle of the database-connection. Also, we expatiate the merit by using database connection. At the last, we give the method of application of JDBC database-connection.
Key words JDBC; database-connection; JSP
Author’s address Tianjin Foreign Studies University, School of Education Technology and Information Service, Tianjin, China 300204
1 引言
隨著Web應用的不斷深入,人們對Web應用系統的性能提出更高的要求,要求基于Web的系統安全、可靠,并且要有足夠的動態交互能力。而其中影響Web系統性能的一個重要因素是數據庫連接機制,因為建立數據庫連接是系統中代價最大的操作之一。所以,優化數據庫連接,提高數據庫連接效率成為提高Web應用系統性能的重要問題。數據庫連接池技術是近幾年發展起來的一種新的數據庫連接方法,它通過重用一組連接對象,使所有用戶共享一組打開的連接,實現數據庫連接的高效、安全的復用,從而提高系統的性能。
2 傳統數據庫連接的不足
傳統的基于Web的數據庫連接操作主要按以步驟進行:1)建立數據庫連接;2)進行Sql操作;3)關閉數據庫連接。使用這種模式開發存在很多的問題:1)Web請求都需要建立一次數據庫連接,每建立一次數據庫連接就需要花費0.05~1 s的時間,還要花費很大的系統開銷;2)不能控制被創建的連接對象數,系統資源被毫無顧忌地開銷,最后導致系統內存溢出,服務器崩潰;3)必須管理每一個連接,確保它們能被正常關閉,如果出現程序異常而導致某些連接未能關閉,將導致數據庫系統中的內存泄露,最終將不得不重啟數據庫[1]。
3 數據庫連接池
3.1 數據庫連接池概述
連接池(connection-pool),顧名思義,就是眾多連接對象的“緩沖存儲池”,也就是連接對象的集合體。連接池內部提供一種管理機制,能控制連接池內部連接對象的個數,對應用程序提供獲取和釋放連接的接口,完善的連接池還能控制連接對象的生存期[2]。數據庫連接池就是在內存中預先建立一些數據庫連接放置于“緩沖池”以備使用,當程序需要建立數據庫連接時,只需從“緩沖池”中取出一個來用而不用新建;同樣,使用完畢后,只需放回“緩沖池”中即可,而連接的建立、斷開都由連接池自身來管理[3]。同時,還可以通過設置連接池的參數來控制連接池中的連接數、每個連接的最大使用次數等。
3.2 使用數據庫連接池的優點
數據庫連接池具有傳統數據庫連接機制不可比擬的優點。1)資源重用。由于數據庫連接得到重用,避免了頻繁創建、釋放連接引起的大量性能開銷。2)更快的系統響應速度。數據庫連接池在初始化過程中,往往已經創建了若干數據庫連接置于池中備用,此時連接的初始化工作均已完成,對于業務請求處理而言,直接利用現有可用連接,避免了數據庫連接初始化和釋放過程的時間開銷,從而縮減系統整體響應時間。3)統一的連接管理,避免數據庫連接泄漏。在較為完備的數據庫連接池實現中,可根據預先的連接占用超時綁定,強制收回被占用連接,從而避免常規數據庫連接操作中可能出現的資源泄漏。
3.3 數據庫連接池的主要操作
數據庫連接池的主要操作:1)建立數據庫連接池對象(隨著服務器的啟動而建立);2)按照事先指定的參數創建初始數量的數據庫連接;3)對于一個數據庫訪問請求,直接從連接池中得到一個連接;4)存取數據庫;5)關閉數據庫,釋放所有數據庫連接;6)釋放數據庫連接池對象(服務器停止、維護期間,釋放數據庫連接池對象,并釋放所有連接)。
4 數據庫連接池在JSP中的實現
JSP是一種基于JAVA的Web開發技術,同JAVA一樣,JSP開發的程序也具有跨平臺性、安全性等優點,是目前主流的Web開發技術之一。下面就詳細描述數據庫連接池在JSP中的實現方法(采用的服務器是Tomcat+SqlServer2000)。
4.1 在服務器端配置數據連接池
打開$CATALINA_HOME/conf/server.xml文件,在
/*上面給出的是配置數據庫連接池資源的參數,其中:name指定資源的JNDI名字;auth指定資源的管理器;maxActive表示連接池的最大數量;maxIdle表示最大空閑連接數;maxWait指最長等待時間;username表示連接數據庫的賬號;password表示連接數據庫的密碼;url表示數據庫連接路徑;driverClassName表示連接數據庫的驅動程序*/
4.2 在應用程序中使用數據庫連接池
在應用程序中使用數據庫連接池的代碼如下:
DataSource ds = 1;//定義一個數據源的引用
Context initCtx = new InitialContext();//初始化上下文環境
Context envCtx = (Context) initCtx.lookup(\"java:comp/env\");//查找命名服務中的根目錄
ds = (DataSource)envCtx.lookup(\"jdbc/SqlServerDB\");//取得資源名字,同時取得數據連接池的引用
Connection cn=ds.getConnection();//在數據池中取出一個連接
/*使用conn進行數據庫SQL操作*/
cn.close();//把連接放入連接池中
5 結束語
對于簡單的數據庫應用來說,由于對數據庫的訪問不是很頻繁,新創建一個連接,用完就關閉它,不會帶來什么明顯的性能上的開銷。但是對于一個復雜的數據庫應用,情況就完全不同了,頻繁地建立、關閉連接,大大增加系統的開銷,極大地降低系統的性能[4]。而連接池技術可以改變傳統數據庫連接的缺陷。本文闡述數據庫連接池的概念與工作原理以及在JSP中的具體實現方法,實踐證明,采用數據庫連接后,大大減少了系統開銷,改善了Web應用,提高了資源利用率,優化了系統的性能。
參考文獻
[1]趙勇超,鄭寧,葛瀛龍.Java中連接池的設計與實現[J].計算機應用與研究,2004(6):219-224
[2]宋善德,郭飛.基于Java的Web數據庫連接池技術的研究[J].計算機工程與應用,2002(8):201-206
[3]鄒雯奇,戚宇林.數據庫連接池技術在WEB系統開發中的應用[J].微計算機信息,2006(22):178-179
[4]孫葉楓,宋中山.JSP中基于連接池的數據庫訪問技術[J].計算機應用,2004(6):80-82