spring中的數據庫配置


  • spring中的數據庫配置

1.使用org.springframework.jdbc.datasource.DriveManagerDataSource

 1 <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">   
 2 <property name="driverClassName">
 3      <value>${jdbc.driverClassName}</value>
 4 </property>   
 5  <property name="url">
 6     <value>${jdbc.url}</value>
 7 </property>   
 8  <property name="username">
 9     <value>${jdbc.username}</value>
10 </property>   
11 <property name="password">
12     <value>${jdbc.password}</value>
13 </property>   
14 </bean>      

說明:DriverManagerDataSource建立連接是只要能建立連接就新建一個connection,根本沒有連接池的概念。

2.使用org.springframework.jndi.JndiObjectFactoryBean

1 <bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">   
2 <property name="jndiName">
3   <value>java:comp/env/jdbc/roseindiaDB_local</value>
4 </property>   
5 </bean>   

說明:JndiObjectFactoryBean能夠通過JNDI獲取DataSource,但是這種方式需要在web服務器中配置數據源,比如在tomcat的server.xml處配置數據源。

3.使用c3p0或者dbcp的池化技術配置數據源,以下用dbcp舉一個栗子。

 1  <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">   
 2 <property name="driverClassName">   
 3     <value>oracle.jdbc.driver.OracleDriver</value>   
 4 </property>   
 5 <property name="url">   
 6     <value>jdbc:oracle:thin:@localhost:1521:orcl</value>   
 7 </property>   
 8 <property name="username">   
 9     <value>test</value>   
10 </property>   
11 <property name="password">   
12     <value>test</value>   
13 </property>   
14 <property name="maxActive">   
15     <value>255</value>   
16 </property>   
17 <property name="maxIdle">   
18     <value>2</value>   
19 </property>   
20 <property name="maxWait">   
21     <value>120000</value>   
22 </property>   
23 </bean>

說明:這是一種推薦說明的數據源配置方式,它真正使用了連接池技術。

JDBC的數據庫連接池使用javax.sql.DataSource來表示,DataSource只是一個接口,該接口通常由服務器(Weblogic,WebSphere,Tomcat)提供實現,也有一些開源組織提供實現,如:DBCP數據庫連接池、C3P0數據庫連接池、Proxpool數據庫連接池.

對象采用池化的原因:采用池化的本意是通過減少對象生成的次數,減少花在對象初始化上面的開銷,從而提高整體性能。

使用數據庫連接池的優點:

1)資源重用:

由於數據庫連接得以重用,避免了頻繁創建,釋放連接引起的大量性能開銷。在減少系統消耗的基礎上,另一方面也增加了系統運行環境的平穩性。

2)更快的系統反應速度

數據庫連接池在初始化過程中,往往已經創建了若干數據庫連接置於連接池中備用。此時連接的初始化工作均已完成。對於業務請求處理而言,直接利用現有可用連接,避免了數據庫連接初始化和釋放過程的時間開銷,從而減少了系統的響應時間。

3)新的資源分配手段

對於多應用共享同一數據庫的系統而言,可在應用層通過數據庫連接池的配置,實現某一應用最大可用數據庫連接數的限制,避免某一應用獨占所有的數據庫資源。

4)統一的連接管理,避免數據庫連接泄露

在較為完善的數據庫連接池實現中,可根據預先的占用超時設定,強制回收被占用連接,從而避免了常規數據庫連接操作中可能出現的資源泄露。

 

相關的知識背景:

4.在Java開發中,使用JDBC操作數據庫的四個步驟如下:

1)加載數據庫驅動程序(class.forName("數據庫驅動類"))

2)連接數據庫(Connection conn=DriverManager.getConnection();)

3)操作數據庫(PreparedStatement stat=con.prepareStatement(sql);stat.executeQuery();)

4)關閉數據庫,釋放連接(conn.close();)

c3p0和dbcp主要解決操作數據庫中的con(即連接)的問題,而hibernate和myibatis解決的是sql(sql語句的問題)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM