java配置數據庫連接池


先來了解下什麼是數據庫連接池

數據庫連接池技術的思想非常簡單,將數據庫連接作爲對象存儲在一個Vector對象中,一旦數據庫連接建立後,不同的數據庫訪問請求就可以共享這些連接,這樣,通過複用這些已經建立的數據庫連接,可以克服上述缺點,極大地節省系統資源和時間。

在實際應用開發中,特別是在WEB應用系統中,如果JSP、Servlet或EJB使用JDBC直接訪問數據庫中的數據,每一次數據訪問請求都必須經歷建立數據庫連接、打開數據庫、存取數據和關閉數據庫連接等步驟,而連接並打開數據庫是一件既消耗資源又費時的工作,如果頻繁發生這種數據庫操作,系統的性能必然會急劇下降,甚至會導致系統崩潰。數據庫連接池技術是解決這個問題最常用的方法,在許多應用程序服務器(例如:Weblogic,WebSphere,JBoss)中,基本都提供了這項技術,無需自己編程,但是,深入瞭解這項技術是非常必要的。


數據庫連接池的主要操作如下:

(1)建立數據庫連接池對象(服務器啓動)。
(2)按照事先指定的參數創建初始數量的數據庫連接(即:空閒連接數)。
(3)對於一個數據庫訪問請求,直接從連接池中得到一個連接。如果數據庫連接池對象中沒有空閒的連接,且連接數沒有達到最大(即:最大活躍連接數),創建一個新的數據庫連接。
(4)存取數據庫。
(5)關閉數據庫,釋放所有數據庫連接(此時的關閉數據庫連接,並非真正關閉,而是將其放入空閒隊列中。如實際空閒連接數大於初始空閒連接數則釋放連接)。
(6)釋放數據庫連接池對象(服務器停止、維護期間,釋放數據庫連接池對象,並釋放所有連接)。

配置步驟:

1.在Tomcat  conf/content.xml中<Context>節點內添加如下內容

<Resource name="jdbc/news" auth="Container" type="javax.sql.DataSource"
 maxActive="100" maxIdle="30" maxWait="10000" username="sa" password="120010" 
driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver" 
url="jdbc:sqlserver://localhost:1433;DatabaseName=news"/>
//mysql數據庫
<Resource name="jdbc/news" auth="Container" type="javax.sql.DataSource"
 maxActive="100" maxIdle="30" maxWait="10000" username="sa" password="120010" 
driverClassName="org.git.mm.mysql.Driver" 
url="jdbc:mysql://localhost/test"/>
name:之後我們要調用resource時候用到
type:是鏈接數據庫時候用到的java擴展包下的類
maxActive:最大連接數
maxIdle:是空閒時候最大連接數
maxwait:空閒判斷標準注意:1.該配置文件裏不允許有中文;各個屬性間的用一個空格隔開2.要將對應鏈接數據庫的jar包放到


tomcat /lib文件夾中工程中就不需要存放了下面還中是鏈接oracle的
<Resource type="javax.sql.DataSource" name="jdbc/news"
 url="jdbc:oracle:thin:@192.168.2.102:1521:orcl" 
driverClassName="oracle.jdbc.driver.OracleDriver" 
password="bg" username="test" maxWait="10000" maxIdle="30" maxActive="100" auth="Container"/>




2.在工程的web.xml中添加如下代碼



<resource-ref>
      <res-ref-name>jdbc/news</res-ref-name>
      <res-type>javax.sql.DataSource</res-type>
      <res-auth>Container</res-auth>
</resource-ref>
這裏<res-ref-name>標籤裏面的名字就是在content.xml文件中的name的名字

3.得到數據庫連接成中的connection對象



Context context=new InitialContext();
DataSourceds=(DataSource)context.lookup("java:comp/env/jdbc/news");
Connectionconn = ds.getConnection();


context是javax.namingx下的類
dataSource是javax.sql下的類
"java:comp/env/jdbc/news"中:java:comp/env是固定寫法 jdbc/news是jndi名稱(Tomcat中配置的那個name)

如果我們不是在web.xml中配置數據源,我們用spring來控制數據庫連接方法步驟:



1.在配置文件中添加如下節點



<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiName" value="java:comp/env/jdbc/news"/>
</bean>

2.配置好了獲取sql語句查詢數據有多少條:



調用的時候直接Dao類繼承JdbcDaoSupport類(spring.jar中的類)
    int count = this.getJdbcTemplate().queryForInt("select * from users");


這樣我們就搞定了!當然也許患有更多方法可以配置,我只列出上面幾種,要是有什麼問題可以私密我我很樂意與大家討論
------ydcun



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章