標籤:style blog http os java 使用 io ar 檔案
JDBC的問題
在程式中,我們經常要建立與資料庫的串連,之後再關閉這個串連。我們知道,資料庫連接對象的建立是比較消耗系統效能的,這些頻繁的操作勢必會消耗大量的系統資源。因此我們需要採用更高效的資料庫訪問技術。
資料庫連接池的概念
在JDBC2.0中提出了資料庫連接池技術,它提供了javax.Sql.DataSource(資料來源)介面,它負責建立與資料庫的串連。通過客戶之間共用一組串連,而不是在它們需要的時候為他們建立立串連,這樣就可以改善資源的使用,提高應用程式的響應能力。
串連池技術的核心思想
串連池技術的核心思想是:串連複用。通過建立一個資料庫連接池以及一套串連使用、分配、治理策略,是的該串連池的串連可以得到高效、安全的複用,避免了資料庫連接的頻繁建立、關閉的開銷。
基於JDBC的資料庫連接池技術
資料庫連接池技術是基於JDBC技術的,對JDBC的原始串連進行了封裝,從而提高了開發效率。
資料來源的建立與JNDI資源
DataSource的建立
DataSource對象由Web容器提供,因此不能再程式中採用建立一個執行個體的方式來產生DataSource對象。
DataSource的擷取
當啟動Web容器之後,Web容器建立DataSource對象,之後就通過JNDI技術來獲得DataSource對象。
DataSource建立、擷取的基本流程
由於DataSource對象是有Web容器提供的,但Web程式不會平白無故的建立DataSource,必須通過一個"訊息"通知Web容器要建立資料來源對象。通常我們用的Web容器時Tomcat,在Tomcat中這個"訊息"就是一個XML設定檔,通過context.xml檔案配置資料來源。
在Tomcat的安裝路徑下的conf 目錄下有一個context.xml檔案。當啟動Tomcat後,Tomcat會載入一系列的設定檔,並且解析設定檔中的內容,當然也包括context.xml檔案。當Tomcat檢查到context.xml檔案中有資料來源對象的配置時,Tomcat就會跟資料來源配置資訊建立相應的資料庫連接。在建立資料來源的過程中,Tomcat會根據配置資訊,比如說:資料來源的名稱、資料來源的類型、資料來源資料連線的最大數目、資料庫連接的最大空閑時間等資訊建立出相應的串連,形成資料庫連接池。
之後在程式中通過JNDI技術,根據資料來源的名稱尋找到相應的資料庫連接池,擷取串連,供程式使用。
JNDI的配置
Tomcat把DataSource作為一種可配置的JNDI資源來處理。其配置如下:
<Context>
……
<Resource name="jdbc/books" auth="Container" type="javax.sql.DataSource" maxActive="1000" maxIdle="30" maxWait="10000" username="sa" password="sa"
driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
url="jdbc:sqlserver://localhost:1433; DatabaseName=books"
/>
</Context>
通過JNDI在程式中擷取DataSource
在程式中,通過javax.naming.Context對象獲得DataSource對象,如下:
Context cxt = new InitialContext();
當Web容器載入到該句代碼時,當完成建立執行個體後,Context對象就擷取了DataSource對象
之後通過Context對象的lookup方法尋找出資料來源,該方法的參數是以"java:comp/env"為首碼,以設定檔中的資料來源的名稱結尾的字串。如下:
DataSource ds = (DataSource)cxt.lookup("java:comp/env/jdbc/books");
取得一個資料來源之後,將其轉換為DataSource對象。
獲得DataSource之後,便通過DataSource對象取得Connection,如下:
Connection conn = ds.getConnection();
有了Connection對象之後就可以對資料進行其他動作了。
http://blog.163.com/[email protected]/blog/static/22928525201021661922648/
【Java】資料庫連接池技術