亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于java實(shí)現(xiàn)訪問oracle數(shù)據(jù)庫(kù)的方法

        2014-04-29 13:30:57林晶晶王夢(mèng)佳楊文暉
        電子世界 2014年15期
        關(guān)鍵詞:數(shù)據(jù)庫(kù)

        林晶晶 王夢(mèng)佳 楊文暉

        【摘要】隨著Java Web的迅速發(fā)展,數(shù)據(jù)庫(kù)連接已成為應(yīng)用程序開發(fā)中的主要問題之一,連接數(shù)據(jù)庫(kù)的效率也成為直接影響應(yīng)用程序執(zhí)行效率的因素。本文以O(shè)racle數(shù)據(jù)庫(kù)系統(tǒng)為例,詳細(xì)介紹了在Java程序中訪問數(shù)據(jù)庫(kù)的傳統(tǒng)數(shù)據(jù)庫(kù)的連接方法和數(shù)據(jù)庫(kù)連接池技術(shù),并對(duì)此進(jìn)行了分析和比較。

        【關(guān)鍵詞】Java;數(shù)據(jù)庫(kù);JDBC;連接池

        1.引言

        隨著Java Web技術(shù)和計(jì)算機(jī)網(wǎng)絡(luò)的迅速發(fā)展,人們對(duì)網(wǎng)絡(luò)資源的共享提出了更高的要求。在網(wǎng)絡(luò)環(huán)境中,對(duì)于數(shù)據(jù)的訪問往往都是非常頻繁的。在Java Web的應(yīng)用程序開發(fā)中使用Java訪問數(shù)據(jù)庫(kù),是整個(gè)應(yīng)用程序開發(fā)過(guò)程中的主要問題之一。下面就將以O(shè)racle數(shù)據(jù)庫(kù)系統(tǒng)為例,闡述在Java程序中訪問數(shù)據(jù)庫(kù)的傳統(tǒng)的數(shù)據(jù)庫(kù)連接方法和數(shù)據(jù)庫(kù)連接池技術(shù)。

        2.傳統(tǒng)的數(shù)據(jù)庫(kù)連接方法

        2.1 JDBC簡(jiǎn)介

        JDBC是用java連接數(shù)據(jù)庫(kù)最為傳統(tǒng)的方法,下面詳細(xì)闡述在java程序中它具體是怎么實(shí)現(xiàn)的。

        2.1.1 JDBC概念

        JDBC的全稱是Java Database Connectivity,即Java數(shù)據(jù)庫(kù)連接。JDBC是標(biāo)準(zhǔn)的Java訪問數(shù)據(jù)庫(kù)的API。JDBC定義了數(shù)據(jù)庫(kù)的連接、SQL語(yǔ)句的執(zhí)行以及查詢結(jié)果集的遍歷等。它由一組用Java編程語(yǔ)言編寫的類和接口組成,位于包java.sql下面,如java.sql.Connection,java.sql.Statement,java.sql.ResultSet等。JDBC提供給Java程序使用的,它將各種數(shù)據(jù)庫(kù)的差異對(duì)Java程序屏蔽了起來(lái),Java程序可以使用同樣的可移植的接口訪問數(shù)據(jù)庫(kù),使Java的應(yīng)用程序屏蔽了數(shù)據(jù)庫(kù)領(lǐng)域,同時(shí)保持了Java語(yǔ)言的“一次編寫,各處運(yùn)行”的優(yōu)點(diǎn)。

        2.1.2 JDBC的結(jié)構(gòu)

        JDBC主要有兩類接口:面向程序開發(fā)人員的JDBC API和面向JDBC驅(qū)動(dòng)程序的JDBC DRIVER API。前者是開發(fā)人員用來(lái)編寫前端應(yīng)用程序的,后者是由數(shù)據(jù)庫(kù)廠商開發(fā)的。

        (1)JDBC API由兩個(gè)部分組成,一個(gè)是核心的API,其類包路徑為javax.sql,這是J2EE的一部分,它具有可滾動(dòng)的結(jié)果集、批量更新的實(shí)現(xiàn)類。另一個(gè)是擴(kuò)展的API,其類包的路徑為javax.sql,這是J2EE的一部分,它具有訪問JNDI資源、分布式事務(wù)等實(shí)現(xiàn)類。四個(gè)重要的JDBC API接口:

        Java.sql.DriverManager:用于加載驅(qū)動(dòng)程序和建立新的數(shù)據(jù)庫(kù)鏈接。

        Java.sql.Connection:完成對(duì)某一指定數(shù)據(jù)庫(kù)的鏈接。

        Java.sql.Statement:管理在指定數(shù)據(jù)庫(kù)連接上的SQL語(yǔ)句的執(zhí)行。

        Java.sql.ResultSet:用來(lái)從數(shù)據(jù)庫(kù)返回的結(jié)果集。

        (2)JDBC Driver API是面向驅(qū)動(dòng)程序開發(fā)商的編程接口。

        JDBC驅(qū)動(dòng)程序根據(jù)其實(shí)現(xiàn)方式分為4種類型:

        JDBC-ODBC bridgedriver(JDBC-ODBC橋接方式);

        Native-API Partly-Java driver(本地API方式);

        Net-ProtocolAll-Java driver(網(wǎng)絡(luò)協(xié)議方式);

        Native-Protocol All-Java driver(本地協(xié)議方式)。

        這四種方式用于不同的場(chǎng)合,它們的運(yùn)行效果也不相同。選擇合適和正確的JDBC驅(qū)動(dòng)程序,是提高數(shù)據(jù)庫(kù)訪問效率時(shí)應(yīng)該考慮的一個(gè)重要因素。

        2.1.3 JDBC的功能

        (1)JDBC的基本功能如下:連接數(shù)據(jù)庫(kù);向數(shù)據(jù)庫(kù)執(zhí)行查詢操作;向數(shù)據(jù)庫(kù)執(zhí)行更新操作;向數(shù)據(jù)庫(kù)執(zhí)行插入操作;向數(shù)據(jù)庫(kù)執(zhí)行刪除操作;執(zhí)行存儲(chǔ)過(guò)程。

        (2)JDBC支持?jǐn)?shù)據(jù)庫(kù)訪問的兩層和三層模型。兩層模型是Java應(yīng)用程序或Apple直接與數(shù)據(jù)庫(kù)進(jìn)行交互操作的模型;三層模型是在應(yīng)用與數(shù)據(jù)庫(kù)之間,有一個(gè)中間應(yīng)用服務(wù)器。

        2.2 JDBC的實(shí)現(xiàn)

        通過(guò)JDBC可以用Java訪問遠(yuǎn)程oracle數(shù)據(jù)庫(kù)和本地oracle數(shù)據(jù)庫(kù),方法是一樣的。但在加載驅(qū)動(dòng)包是應(yīng)該注意要根據(jù)所使用的相應(yīng)的JDK環(huán)境來(lái)加載相應(yīng)的包。需要注意的是

        classes12.jar:for Java 1.2 and 1.3

        ojdbc14.jar:for Java 1.4 and 1.5

        ojdbc5.jar:for Java 1.5

        ojdbc6.jar:for Java 1.6

        本文用的是Java 1.6,所以加載的是ojdbc6.jar這個(gè)包。

        具體實(shí)現(xiàn)的部分代碼如下:

        這里的url的格式應(yīng)該為:

        String url= "jdbc:oracle:thin:@"+ip+":"+port+":"+dbName;

        其中ip為要訪問的數(shù)據(jù)庫(kù)的IP地址,port為要訪問的數(shù)據(jù)庫(kù)的端口號(hào),dbName為要訪問的數(shù)據(jù)庫(kù)名。

        3.數(shù)據(jù)庫(kù)連接池的連接技術(shù)

        3.1 數(shù)據(jù)庫(kù)連接池簡(jiǎn)介

        數(shù)據(jù)庫(kù)連接池(Connection pool),它是程序啟動(dòng)時(shí)建立足夠的數(shù)據(jù)庫(kù)連接,并將這些連接組成一個(gè)連接池,由程序動(dòng)態(tài)地對(duì)池中的連接進(jìn)行申請(qǐng)、使用、釋放。

        數(shù)據(jù)庫(kù)連接池基本的思想是在系統(tǒng)初始化的時(shí)候,將數(shù)據(jù)庫(kù)連接作為對(duì)象存儲(chǔ)在內(nèi)存中,當(dāng)用戶需要訪問數(shù)據(jù)庫(kù)時(shí),并非要建立一個(gè)新的連接,而是從連接池中取出一個(gè)已建立的空閑連接對(duì)象。使用完畢后,用戶也并非要將連接關(guān)閉,而是將連接放回連接池中,以供下一個(gè)請(qǐng)求訪問使用。而連接的建立、斷開都由連接池自身來(lái)管理。同時(shí),還可以通過(guò)設(shè)置連接池的參數(shù)來(lái)控制連接池中的初始連接數(shù)、連接的上下限數(shù)以及每個(gè)連接的最大使用次數(shù)、最大空閑時(shí)間等等。也可以通過(guò)其自身的管理機(jī)制來(lái)監(jiān)視數(shù)據(jù)庫(kù)連接的數(shù)量、使用情況等。

        3.2 數(shù)據(jù)庫(kù)連接池影響因素

        (1)最小連接數(shù):是連接池一直保持的數(shù)據(jù)庫(kù)連接。(2)最大連接數(shù):是連接池能申請(qǐng)的最大連接數(shù)。(3)最小連接數(shù)與最大連接數(shù)相差太大:那么最先的連接請(qǐng)求將會(huì)獲利,之后超過(guò)最小連接數(shù)量的連接請(qǐng)求等價(jià)于建立一個(gè)新的數(shù)據(jù)庫(kù)連接。

        3.3 數(shù)據(jù)庫(kù)連接池運(yùn)行機(jī)制

        (1)從連接池獲取或者創(chuàng)建可使用的連接。(2)使用完畢之后,把所使用的連接返還給連接池。(3)在系統(tǒng)關(guān)閉前,斷開所有連接并釋放連接占用的系統(tǒng)資源。(4)還能夠處理無(wú)效連接,并且能夠限制連接池中的連接總數(shù)不低于某個(gè)預(yù)定值和不超過(guò)某個(gè)預(yù)定值。

        3.4 數(shù)據(jù)庫(kù)連接池實(shí)現(xiàn)

        在Java中常用的數(shù)據(jù)庫(kù)連接池有C3P0、Proxool、DBCP、BoneCP、Druid、Tomcat jdbc pool等等。本文運(yùn)用的是Tomcat jdbc pool。

        Tomcat jdbc pool是Tomcat7新的連接池。Tomcat 在7.0以前的版本都是使用commons-dbcp作為連接池的實(shí)現(xiàn),但是Tomcat從7.0開始引入一個(gè)新的模塊:Tomcat jdbc pool。Tomcat jdbc pool可在Tomcat中直接使用,也可以在獨(dú)立的應(yīng)用中使用。若tomcat jdbc pool在java中單獨(dú)使用,加入tomcat-jdbc.jar和tomcat-juli.jar這兩個(gè)包就可以了;若作為數(shù)據(jù)源使用的話,就要借助于Spring框架,用它來(lái)管理tomcat jdbc-pool的連接。在工程中還要導(dǎo)入三個(gè)包:spring-contex-3.2.2.RELEASE.jar, spring-core-3.2.2.RELEASE.jar,org.springframework.beans-3.1.0.M1.jar.還要將配置好的數(shù)據(jù)源文件DSPoolAppContext.xml放入相應(yīng)的目錄下。這樣工程才可以運(yùn)行。下面以作為數(shù)據(jù)源使用來(lái)具體說(shuō)明。

        (1)DSPoolAppContext.xml配置文件的部分代碼。

        (2)在java中使用數(shù)據(jù)源的代碼。

        4.傳統(tǒng)數(shù)據(jù)庫(kù)連接的方法與數(shù)據(jù)庫(kù)連接池技術(shù)的比較

        JDBC作為一種數(shù)據(jù)庫(kù)訪問技術(shù),具有簡(jiǎn)單易用的優(yōu)點(diǎn)。但使用這種方式進(jìn)行Web應(yīng)用程序開發(fā),存在很多問題:首先,每一次Web請(qǐng)求都要建立一次數(shù)據(jù)庫(kù)連接。建立連接是一個(gè)費(fèi)時(shí)的活動(dòng),而且系統(tǒng)還要分配內(nèi)存資源。這個(gè)時(shí)間對(duì)于一次或幾次數(shù)據(jù)庫(kù)操作,或許感覺不出系統(tǒng)有多大的開銷??墒菍?duì)于現(xiàn)在的Web應(yīng)用,尤其是大型電子商務(wù)網(wǎng)站,同時(shí)有幾百人甚至幾千人在線是很正常的事。在這種情況下,頻繁的進(jìn)行數(shù)據(jù)庫(kù)連接操作勢(shì)必占用很多的系統(tǒng)資源,網(wǎng)站的響應(yīng)速度必定下降。還有,這種開發(fā)不能控制被創(chuàng)建的連接對(duì)象數(shù),系統(tǒng)資源會(huì)被毫無(wú)顧及的分配出去。因此為了提高數(shù)據(jù)庫(kù)的連接效率而采用了數(shù)據(jù)庫(kù)連接池技術(shù)。使用數(shù)據(jù)庫(kù)連接池的好處有:資源重用;更快的系統(tǒng)響應(yīng)時(shí)間;統(tǒng)一的連接管理,避免數(shù)據(jù)庫(kù)連接泄漏。所以使用數(shù)據(jù)庫(kù)連接技術(shù)可以解決傳統(tǒng)數(shù)據(jù)庫(kù)連接所出現(xiàn)的問題。另外本文用到的連接池是Tomcat7.0中的tomcat jdbc pool,而它又具有以下特點(diǎn):它近乎兼容dbcp,性能更高;通過(guò)異步方式獲取連接;支持高并發(fā)應(yīng)用環(huán)境;比較簡(jiǎn)單;有更好的空閑連接機(jī)制等等。

        5.總結(jié)

        本文以O(shè)racle數(shù)據(jù)庫(kù)系統(tǒng)為例,闡述了在Java程序中訪問數(shù)據(jù)庫(kù)的傳統(tǒng)的數(shù)據(jù)庫(kù)連接方法和數(shù)據(jù)庫(kù)連接池技術(shù)并進(jìn)行了分析比較。但本文中仍存在一些不足的地方,接下來(lái)的工作是通過(guò)更多的測(cè)試來(lái)不斷完善。

        參考文獻(xiàn)

        [1]羅榮,唐學(xué)兵.基于JDBC的數(shù)據(jù)庫(kù)連接池的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程,2004.

        [2]何洪舟.Java程序中訪問Oracle數(shù)據(jù)庫(kù)的技術(shù)分析與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用與軟件,2007.

        [3]陳虹君.Java Web與數(shù)據(jù)庫(kù)連接池技術(shù)的應(yīng)用研究與實(shí)踐[D].2008.

        [4]李剛.Java數(shù)據(jù)庫(kù)技術(shù)詳解[M].北京工業(yè)出版社,2010.

        [5]百度百科.[EB/OL].http://baike.baidu.com/view/84055.htm?fr=Aladdin.

        [6]Apache Tomcat 7官網(wǎng).The Tomcat JDBC Connection Pool. https://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html.

        作者簡(jiǎn)介:林晶晶(1986—),女,甘肅臨洮人,成都理工大學(xué)信息科學(xué)與技術(shù)學(xué)院碩士研究生在讀,研究方向:計(jì)算機(jī)網(wǎng)絡(luò)應(yīng)用技術(shù)。

        猜你喜歡
        數(shù)據(jù)庫(kù)
        數(shù)據(jù)庫(kù)
        數(shù)據(jù)庫(kù)
        兩種新的非確定數(shù)據(jù)庫(kù)上的Top-K查詢
        數(shù)據(jù)庫(kù)
        數(shù)據(jù)庫(kù)
        數(shù)據(jù)庫(kù)
        數(shù)據(jù)庫(kù)
        數(shù)據(jù)庫(kù)
        數(shù)據(jù)庫(kù)
        數(shù)據(jù)庫(kù)
        中文字幕一区二区黄色| 欧美中文字幕在线| 午夜福利不卡无码视频| 精品女同一区二区三区亚洲| 亚洲精品视频在线一区二区| 99热爱久久99热爱九九热爱| 亚洲 都市 校园 激情 另类| 亚洲欧美v国产蜜芽tv| 桃色一区一区三区蜜桃视频| 亚洲人成国产精品无码果冻| 中文字幕人妻丝袜美腿乱| 美女爽好多水快进来视频| 国产另类人妖在线观看| 隔壁老王国产在线精品| 久久久久久伊人高潮影院| 中文字幕国产精品中文字幕| 中文字幕东京热一区二区人妻少妇| 免费无码专区毛片高潮喷水| 国产精品美女久久久久| 欧美性猛交xxxx免费看蜜桃| 国产成人一区二区三区在线观看 | 国产丝袜免费精品一区二区| 一区二区三区日本视频| 日韩av无码一区二区三区不卡| 亚洲中久无码永久在线观看同| 国产精品无码mv在线观看| 香港三级日本三韩级人妇久久| 狼狼综合久久久久综合网| 亚洲av无码资源在线观看| 日韩女优一区二区视频| 亚洲第一幕一区二区三区在线观看 | 一本色道久久99一综合| 亚洲女同成av人片在线观看 | 国产亚洲午夜精品久久久| 国产成人精品久久综合| 国产免费资源| 麻豆成人久久精品二区三区91| 亚洲小说区图片区色综合网| 蜜臀av无码精品人妻色欲| 亚洲AV无码一区二区三区少妇av| 免费观看人妻av网站|