• 初识apache DBCP连接池


    连接案例:

    首先:我们使用的是mysql数据库,所以要有一个mysql和java的JDBCjar包;

    然后是DBCP中的两个jar包,DBCP使用的话,需要两个包:

    dbcp.jar和pool.jar。

    普通连接:

    package dbcp;
    
    import java.sql.Connection;
    import java.sql.SQLException;
    
    import org.apache.commons.dbcp.BasicDataSource;
    
    /**
     * dbcp的使用有两个包:
     * 		dbcp核心包 和 pool包
     * @author mzy
     *
     */
    public class Demo01 {
    	private static String url="jdbc:mysql://localhost:3306/test";
    	private static String user="root";
    	private static String password="123456";
    	private static String driverClass="com.mysql.jdbc.Driver";
    	
    	public static void main(String[] args) {
    		// 1) 创建dbcp连接池对象
    		BasicDataSource bds = new BasicDataSource();
    		
    		// 2) 设置连接参数
    		bds.setUrl(url);
    		bds.setUsername(user);
    		bds.setPassword(password);
    		bds.setDriverClassName(driverClass);
    		
    		// 3) 设置连接池参数
    		bds.setInitialSize(5); // 初始化连接
    		bds.setMaxActive(10); // 最大连接数
    		// 如果不调整的话,会一直等待
    		bds.setMaxWait(3000); // 当超过最大连接时,最大等待时间为3秒
    		
    		try {
    			// 从连接池中获取连接
    			for(int i=0; i<11; i++) {
    				Connection conn = bds.getConnection();
    				System.out.println(conn); // 这里得到的Connection是一个代理对象
    				if(i==3) {
    					conn.close(); // 这些close其实是把连接放回连接池中
    					// 注意之前我们讲的代理模式:动态代理
    				}
    			}
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    	}
    }
    

    通过jdbc.properties中的配置文件进行连接(并设定初始化参数,注意和上面作对比):

    jdbc.properties

    url=jdbc:mysql://localhost:3306/test
    username=root
    password=123456
    driverClassName=com.mysql.jdbc.Driver
    
    initialSize=5
    maxActive=12
    maxWait=5000
    package dbcp;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.sql.Connection;
    import java.util.Properties;
    
    import org.apache.commons.dbcp.BasicDataSource;
    import org.apache.commons.dbcp.BasicDataSourceFactory;
    
    /**
     * 通过读properties配置文件进行读写
     * 
     * 读取jdbc.properties文件内容
     * dbcp可以自动识别每个配置信息,但是约定前提:	
     * 		配置文件文件的key名称和设置方法的名称保持一致!!!(反射)
     * 		即javaBean约束:
     * 		例如setAge --> age 等等
     */
    public class Demo02 {
    	public static void main(String[] args) {
    		
    		try {
    			//  获取连接
    			Properties prop = new Properties();
    			// 使用类路径读取配置文件
    			InputStream in = Demo02.class.getResourceAsStream("/jdbc.properties");
    			// 加载配置文件
    			prop.load(in);
    			// 1) 使用工厂类来创建dbcp连接池对象(读取配置文件方式)
    			BasicDataSource bds = (BasicDataSource)BasicDataSourceFactory.createDataSource(prop);
    			
    			//从连接池中获取连接
    			for(int i=1;i<=13;i++){
    				Connection conn = bds.getConnection(); //注意: 这里返回的Connection对象,不是原来的Connection,而是代理后的Connection对象
    				System.out.println(conn);
    				
    				//注意: 使用连接池,记住释放连接
    			/*	if(i==3){
    					conn.close();// 把连接对象放回连接池中的。连接池中最大能够保存最大连接数的连接对象
    				}*/
    			}
    		} catch (IOException e) {
    			e.printStackTrace();
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
    }
    



  • 相关阅读:
    poj 1017 Packets
    hdu 1058 The sum problem
    HDU 1205 吃糖果
    Hdu 1004 Let the Balloon Rise map解决方法
    poj 1700 贪心算法(1)
    大数计算器
    大整数的加减乘除取模
    【单调队列】poj 2823 Sliding Window
    【单调队列】bzoj 1407 [HAOI2007]理想的正方形
    【单调队列+二分查找】bzoj 1012: [JSOI2008]最大数maxnumber
  • 原文地址:https://www.cnblogs.com/mzywucai/p/11053470.html
Copyright © 2020-2023  润新知