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

        ?

        基于java實(shí)現(xiàn)訪問(wè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)用程序開(kāi)發(fā)中的主要問(wèn)題之一,連接數(shù)據(jù)庫(kù)的效率也成為直接影響應(yīng)用程序執(zhí)行效率的因素。本文以O(shè)racle數(shù)據(jù)庫(kù)系統(tǒng)為例,詳細(xì)介紹了在Java程序中訪問(wèn)數(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ù)的訪問(wèn)往往都是非常頻繁的。在Java Web的應(yīng)用程序開(kāi)發(fā)中使用Java訪問(wèn)數(shù)據(jù)庫(kù),是整個(gè)應(yīng)用程序開(kāi)發(fā)過(guò)程中的主要問(wèn)題之一。下面就將以O(shè)racle數(shù)據(jù)庫(kù)系統(tǒng)為例,闡述在Java程序中訪問(wèn)數(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的全稱(chēng)是Java Database Connectivity,即Java數(shù)據(jù)庫(kù)連接。JDBC是標(biāo)準(zhǔn)的Java訪問(wèn)數(shù)據(jù)庫(kù)的API。JDBC定義了數(shù)據(jù)庫(kù)的連接、SQL語(yǔ)句的執(zhí)行以及查詢結(jié)果集的遍歷等。它由一組用Java編程語(yǔ)言編寫(xiě)的類(lèi)和接口組成,位于包java.sql下面,如java.sql.Connection,java.sql.Statement,java.sql.ResultSet等。JDBC提供給Java程序使用的,它將各種數(shù)據(jù)庫(kù)的差異對(duì)Java程序屏蔽了起來(lái),Java程序可以使用同樣的可移植的接口訪問(wèn)數(shù)據(jù)庫(kù),使Java的應(yīng)用程序屏蔽了數(shù)據(jù)庫(kù)領(lǐng)域,同時(shí)保持了Java語(yǔ)言的“一次編寫(xiě),各處運(yùn)行”的優(yōu)點(diǎn)。

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

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

        (1)JDBC API由兩個(gè)部分組成,一個(gè)是核心的API,其類(lèi)包路徑為javax.sql,這是J2EE的一部分,它具有可滾動(dòng)的結(jié)果集、批量更新的實(shí)現(xiàn)類(lèi)。另一個(gè)是擴(kuò)展的API,其類(lèi)包的路徑為javax.sql,這是J2EE的一部分,它具有訪問(wèn)JNDI資源、分布式事務(wù)等實(shí)現(xiàn)類(lèi)。四個(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)程序開(kāi)發(fā)商的編程接口。

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

        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ù)訪問(wèn)效率時(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ù)訪問(wèn)的兩層和三層模型。兩層模型是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訪問(wèn)遠(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為要訪問(wèn)的數(shù)據(jù)庫(kù)的IP地址,port為要訪問(wèn)的數(shù)據(jù)庫(kù)的端口號(hào),dbName為要訪問(wèn)的數(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)用戶需要訪問(wèn)數(shù)據(jù)庫(kù)時(shí),并非要建立一個(gè)新的連接,而是從連接池中取出一個(gè)已建立的空閑連接對(duì)象。使用完畢后,用戶也并非要將連接關(guān)閉,而是將連接放回連接池中,以供下一個(gè)請(qǐng)求訪問(wèn)使用。而連接的建立、斷開(kāi)都由連接池自身來(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)閉前,斷開(kāi)所有連接并釋放連接占用的系統(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開(kāi)始引入一個(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ù)訪問(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),而且系統(tǒng)還要分配內(nèi)存資源。這個(gè)時(shí)間對(duì)于一次或幾次數(shù)據(jù)庫(kù)操作,或許感覺(jué)不出系統(tǒng)有多大的開(kāi)銷(xiāo)。可是對(duì)于現(xiàn)在的Web應(yīng)用,尤其是大型電子商務(wù)網(wǎng)站,同時(shí)有幾百人甚至幾千人在線是很正常的事。在這種情況下,頻繁的進(jìn)行數(shù)據(jù)庫(kù)連接操作勢(shì)必占用很多的系統(tǒng)資源,網(wǎng)站的響應(yīng)速度必定下降。還有,這種開(kāi)發(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)的問(wè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程序中訪問(wèn)數(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程序中訪問(wèn)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ù)
        數(shù)據(jù)庫(kù)
        數(shù)據(jù)庫(kù)
        數(shù)據(jù)庫(kù)
        曝光无码有码视频专区| 青青久在线视频免费视频| 亚洲av无码精品无码麻豆| 日产无人区一线二线三线乱码蘑菇| 国产欧美日韩专区| 国产一级做a爱视频在线| 久久麻传媒亚洲av国产| 日本少妇高潮喷水xxxxxxx| 免费做爰猛烈吃奶摸视频在线观看 | 久久精品夜夜夜夜夜久久 | 亚洲色大成网站www尤物| 日韩Va亚洲va欧美Ⅴa久久| 成av人大片免费看的网站| 人人人妻人人澡人人爽欧美一区| 久久精品成人欧美大片| 亚欧免费无码AⅤ在线观看| 最新中文字幕亚洲一区| 久久精品国产久精国产果冻传媒| 久久精品国产夜色| 亚洲精品尤物av在线网站| 日本人视频国产一区二区三区| 亚洲成在人网站av天堂| 日本污视频| 国产精品久久一区二区蜜桃| 国产区女主播在线观看| 欧美亚洲国产片在线播放| 娇柔白嫩呻吟人妻尤物| 亚洲成人av一区二区| 国产成人精品一区二区三区| 成年女人毛片免费视频| 亚洲综合色婷婷七月丁香| 亚洲av手机在线网站| 骚片av蜜桃精品一区| 精品一区二区三区免费爱| 隔壁的日本人妻bd高清中字 | 黄色a级国产免费大片| 男性一插就想射是因为啥| 精品久久一品二品三品| 人妻色综合网站| 黄色网址国产| 亚洲av毛片在线播放|