spring 使用c3po连接池

1数据源:可以简单理解为数据的来源。

2 连接池:是缓存一定数量的数据库连接,当程序需要数据库连接的时候,直接在连接池中获取空闲的连接,使用完再放回连接池中,此连接又变成空闲状态,等待下一次连接。有于开启连接和关闭连接比较耗费系统资源,有类连接池的管理可以减少这方面的开支。

3 常见连接池:c3p0,dbcp,proxool是常见开源的三种连接池。Spring提供的DriverManagerDataSource总是新建一个连接,根本没有起到连接池的作用。

4 连接池获取连接的方法: Connection conn=dataSource.getConnection();

5如下是数据源的使用:

c3p0:

UserDao:

package com.dao;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.SQLException;import javax.sql.DataSource;public class UserDao {private DataSource dataSource;public DataSource getDataSource() {return dataSource;}public void setDataSource(DataSource dataSource) {this.dataSource = dataSource;}public void save(){try {Connection conn=dataSource.getConnection();String sql="insert into t_student values(?,?)";PreparedStatement ps=conn.prepareStatement(sql);ps.setInt(1, 1);ps.setString(2, "zhang");ps.executeUpdate();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}

UserService:

package com.service;import com.dao.UserDao;public class UserService {private UserDao userDao;public UserDao getUserDao() {return userDao;}public void setUserDao(UserDao userDao) {this.userDao = userDao;}public void save(){userDao.save();}}

applicationContext.xml:

<?xml version="1.0" encoding="UTF-8"?><beans xmlns=""xmlns:xsi=""xmlns:context=""xmlns:tx=""xmlns:aop=""xsi:schemaLocation=" http://www.springframework.org/schema/beans/spring-beans-2.5.xsd "><bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"><property name="driverClass" value="oracle.jdbc.driver.OracleDriver"></property><property name="jdbcUrl" value="jdbc:oracle:thin:@localhost:1521:XE"></property><property name="user" value="orcl"></property><property name="password" value="newsnews"></property></bean><bean id="userDao" class="com.dao.UserDao"><property name="dataSource" ref="dataSource"></property></bean><bean id="userService" class="com.service.UserService"><property name="userDao" ref="userDao"></property></bean></beans>

测试类:

package com.aop;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.service.UserService;public class Test {public static void main(String[] args) {ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");UserService uc=(UserService) ac.getBean("userService");uc.save();}}

6 为了方便维护,修改数据源,可以把数据源的值写在配置中,,这种方式是通过设置站位符实现的,使用Spring的PropertyPlaceholderConfigurer。

需要在spring配置中增加一个管理配置的bean,用来管理数据源取值的配置。

<beanclass="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"><property name="locations"><value>classpath:c3p0.properties</value></property></bean>

classpath:配置的路径,从src目录开始。

applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?><beans xmlns=""xmlns:xsi="" xmlns:context=""xmlns:tx="" xmlns:aop=""xsi:schemaLocation=" "><context:component-scan base-package="com.*" /><context:annotation-config /><beanclass="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"><property name="locations"><value>classpath:c3p0.properties</value></property></bean><bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"><property name="driverClass" value="${driverClass}"></property><property name="jdbcUrl" value="${jdbcUrl}"></property><property name="user" value="${user}"></property><property name="password" value="${password}"></property></bean></beans>

c3p0.properties

driverClass=oracle.jdbc.driver.OracleDriverjdbcUrl=jdbc:oracle:thin:@localhost:1521:XEuser=orclpassword=newsnews

=前面的值要和${}里面的值对应。



每当我看天的时候我就不喜欢再说话,每当我说话的时候我却敢看天。

spring 使用c3po连接池

相关文章:

你感兴趣的文章:

标签云: