付宗見 楊志獻
摘要:Java語言是當前普遍使用的計算機數(shù)據(jù)庫編程語言,該文首先介紹了Java連接數(shù)據(jù)庫的主要方法,并從JDBC的特點出發(fā),詳細探討了提高Java數(shù)據(jù)庫訪問效率的幾種方法。
關鍵詞:數(shù)據(jù)庫訪問;Java;JDBC
中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2014)24-5595-02
數(shù)據(jù)庫在軟件開發(fā)中的應用十分廣泛。對數(shù)據(jù)庫進行連接是應用數(shù)據(jù)庫的一個重要前提。Java語言由于具有不依賴系統(tǒng)平臺、語言系統(tǒng)發(fā)達、安全等特點,而且一次編寫就能在各處運行,因此在眾多計算機編程語言中脫穎而出,成為了當前最被大眾認可的編程語言。在Java語言中,對數(shù)據(jù)庫進行有效的訪問需要以JDBC作為前提。所謂JDBC,就是利用Java語言編寫的一系列的類和接口,利用JDBC可以方便快捷的實現(xiàn)對任何一個數(shù)據(jù)庫的有效連接。
1 JDBC概述
1.1 JDBC的產(chǎn)生背景
Java語言的優(yōu)點很多,它語言系統(tǒng)發(fā)達、通俗易懂、便于編寫,能夠從網(wǎng)絡上自動下載,不依賴系統(tǒng)平臺,因此是進行數(shù)據(jù)庫應用程序開發(fā)的理想語言。隨著Java的應用越來越廣泛,越來越多的Java語言使用者都渴望編寫出可不依賴數(shù)據(jù)庫管理系統(tǒng)( Data Base Management system)而獨立存在的程序,從而方便對各種各樣的數(shù)據(jù)庫的連接過程,使訪問更加方便。所以,定義一個通用的SQL數(shù)據(jù)庫存取框架有相當?shù)钠惹行院捅匾?,通過數(shù)據(jù)庫存取框架在數(shù)據(jù)庫的連接模塊上生成統(tǒng)一的界面,從而使得應用程序的開發(fā)者能夠給出多樣化的連接方案。而實現(xiàn)上述功能,所唯一欠缺的在于如何實現(xiàn)Java語言和各式各樣的數(shù)據(jù)庫之間的無障礙溝通,而利用JDBC,可以完美的解決這個問題。
1.2 JDBC的特點
在Java中,有兩個JDBC接口,一個JDBC接口是在底層的JDBC Driver API,另一個被用于Application Programe Interface,即面向程序員的應用程序接口。位于底層的JDBC Driver API主要有四個形式,即JDBC-ODBC橋形式、部分Java驅動程序和本機API的組合形式、面向數(shù)據(jù)庫中間件的純Java驅動程序以及直接面向數(shù)據(jù)庫的純Java驅動程序。其中,JDBC-ODBC橋的形式為了用戶能夠成功讀取ODBC上的數(shù)據(jù)信息,要求客戶端必須要有ODBC的驅動程序,因而給推廣應用造成了一定的困難。而部分Java驅動程序與本機API相結合的形式,需要通過本地代碼的形式完成對數(shù)據(jù)庫的API調(diào)用,然后將JDBC API轉化成與商用數(shù)據(jù)庫相匹配的API,以此來實現(xiàn)對數(shù)據(jù)庫所提供數(shù)據(jù)的使用。面向數(shù)據(jù)庫中間件的純Java驅動程序在中間件服務器中隱藏了Java的細節(jié),因此不需要考慮Java程序的細節(jié),根據(jù)這個特性,能夠使用一樣的代碼實現(xiàn)對不一樣數(shù)據(jù)庫的訪問。直接面向數(shù)據(jù)庫的純Java驅動程序的訪問方式比較直接,直接在服務器上處理發(fā)自客戶端的請求,并顯示程序的執(zhí)行結果,直接面向數(shù)據(jù)庫的純Java驅動程序的使用比較簡單,不需要安裝驅動程序或者附加軟件,因此與前幾種相比有其獨特的優(yōu)勢。
2 優(yōu)化SQL語句格式
在通過Java語言對數(shù)據(jù)庫進行連接時,連接的效果與SQL語句的格式有一定的關系。在實際操作中,一般SQL語句的執(zhí)行都是通過Statement對象實現(xiàn)的,這樣的辦法比較笨拙,需要每一次都解析編譯數(shù)據(jù)庫,工作量大,在極大程度上降低了對數(shù)據(jù)庫的訪問效率。而通過Prepared Statement對象來實現(xiàn)對SQL語句的執(zhí)行就不會出現(xiàn)這樣的現(xiàn)象。通過Prepared Statement,命令會根據(jù)特定的機制被數(shù)據(jù)庫進行解析編譯,然后在特定的存儲區(qū)域進行暫時的儲存,這樣在下一次訪問數(shù)據(jù)庫時,只需要再一次進行命令解析就可以了,不需要進行額外的編譯,在一定程度上提高了訪問數(shù)據(jù)庫的效率。
同時,利用Prepared Statement為對象執(zhí)行SQL語言,通過配合數(shù)據(jù)庫批量更新機制的方式,即一次性調(diào)用整批的更新命令,一次性實現(xiàn)對數(shù)據(jù)庫的全面更新,能夠進一步提升訪問數(shù)據(jù)庫的效率。因此,在實際操作時,利用Prepared Statement代替Statement作為SQL語句的執(zhí)行對象受到了普遍的使用。值得注意的是,在具體的操作層面,需要對數(shù)據(jù)庫及其驅動配置是否支持批量更新進行必要的檢查,在檢查時,需要用到Data base Meta Data對象所提供的Support Batch UP dates的辦法。
3 使用數(shù)據(jù)庫連接池技術
數(shù)據(jù)庫連接池技術是以JDBC為前提,在實踐過程中逐漸改進逐漸完善的一種技術。數(shù)據(jù)庫連接池技術的優(yōu)點在于以重用一組連接對象的方式,幫助用戶共享一組己經(jīng)打開的連接,省去了自主連接數(shù)據(jù)庫所需要的時間時間,最大限度上提升了Java訪問數(shù)據(jù)庫的效率。
數(shù)據(jù)庫連接池技術功能的實現(xiàn)依靠于預設的一個緩沖池,在緩沖池中存儲數(shù)據(jù)庫中的各種數(shù)據(jù),并將一定數(shù)量的數(shù)據(jù)連接進行預先存儲,這樣,在Java訪問數(shù)據(jù)庫時,根據(jù)實際的需要從“緩沖池”中找到相對應的連接,在訪問完成以后,再將連接重新存儲進緩沖池。由緩沖池負責對數(shù)據(jù)連接的存儲和整理工作,極大程度的減輕了用戶的工作量,,利用這樣的方法,可以有效的提升數(shù)據(jù)庫的訪問效率。
使用數(shù)據(jù)庫連接池技術,其技術要點在于連接池的建立方式以及如何實現(xiàn)對存儲在連接池中的各類連接的有效整理。解決好了這兩個問題,數(shù)據(jù)庫連接池技術的發(fā)展就變得更加成熟。通常說來,在連接池的建立上,需要以讀取XML文件中的配置參數(shù)的方式來實現(xiàn)。通過讀取XML文件中的配置參數(shù),能夠在系統(tǒng)中建立一個靜態(tài)的緩沖池,這個緩沖池對于數(shù)據(jù)庫而言是唯一的,而且其配置參數(shù)也是明確的。在建立好數(shù)據(jù)庫連接池以后,還需要保證連接池的運行穩(wěn)定性,以便于用戶能夠從連接池中有效的提取自己想要的連接。
在解決了數(shù)據(jù)庫連接池的建立問題以后,還需要對連接池實施高效的管理,保證存儲在連接池中連接的有序性。管理連接池可以采用的方法有很多,每一種管理方式可能取得的管理效果都會有所不同。在實際操作中,應該根據(jù)實際情況采用最合適的管理方式。目前階段,在數(shù)據(jù)庫連接池的管理方式使用的較為廣泛的方法是Reference Counting的辦法。
4 采用Java多線程技術
Java多線程技術的優(yōu)勢十分明顯,在JAVA多線程技術中,同步機制是至關重要的一項基礎保障,同步機制能夠保證線程間的同步,保證線程間的相互通信,是多線程技術得以實現(xiàn)的大前提。在Java中已經(jīng)提供了幾類可供直接使用的方法來實現(xiàn)線程間的同步。在劃分臨界資源時可借助synchronized這一關鍵詞來對語句塊進行標示,其他Object類中的方法以及Tread類中的方法也能夠被直接用來處理不同線程的啟用或中斷操作。采用多線程技術來提高數(shù)據(jù)庫的訪問效率時關鍵問題并不在于技術本身,而是對線程的有效管理,這取決于程序設計者的控制能力。
5 結束語
綜上所述,Java語言是當前主流的編程語言,在JAVA語言成為主流的背景下,如何利用Java語言的優(yōu)勢,提高訪問數(shù)據(jù)庫的效率是值得廣大業(yè)內(nèi)人士進一步探討的問題。通過本文所列舉的優(yōu)化SQL語言格式、數(shù)據(jù)庫連接池技術以及Java多線程技術三種方法,可以有效的提高數(shù)據(jù)庫的訪問效率,具有廣泛的應用前景。
參考文獻:
[1] 谷慶華,李成貴.基于Java語言實現(xiàn)數(shù)據(jù)庫的訪問[J].計算機技術與發(fā)展,2008,18(2):143-144.
[2] 周書鋒,張懷偉,韓紅艷.基于Java語言的數(shù)據(jù)庫訪問[J].福建電腦,2005,9(24):34-35.
[3] 徐萍.JAVA訪問SQL數(shù)據(jù)庫的優(yōu)化探討[J].探索與觀察,2010,10(32):61-62.