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语句的问题)

posted @ 2016-06-24 15:26  姬野  阅读(9495)  评论(0编辑  收藏  举报