• 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 block
    			e.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="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-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,用来管理数据源取值的配置。

    	<bean
    		class="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="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd"> <context:component-scan base-package="com.*" /> <context:annotation-config /> <bean class="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.OracleDriver
    jdbcUrl=jdbc:oracle:thin:@localhost:1521:XE
    user=orcl
    password=newsnews
    


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













    
  • 相关阅读:
    使用systemctl管理指定服务需要做的配置
    挖矿病毒
    灰度发布系统
    血一般的教训,请慎用insert into select
    关于程序bug的闲谈
    来自一个网络监控软件的自述
    为什么CTO、技术总监、架构师都不写代码,还这么牛逼?
    原来 Elasticsearch 还可以这么理解
    爬了20W+条猫咪交易数据,它不愧是人类团宠
    NPUCTF2020 这是什么觅🐎
  • 原文地址:https://www.cnblogs.com/mthoutai/p/6995052.html
Copyright © 2020-2023  润新知