zoukankan      html  css  js  c++  java
  • JDBC 数据库连接池 DBCP 配置

    JDK Compliance 版本 5.0,需要用到的Jar为 commons-dbcp-1.3.jar 和 commons-pool.jar。(可在 Apache 官方网站中下载).

    首先,需要在src下新建 dbcp.properties 属性文件,具体如下:

    driverClassName=com.mysql.jdbc.Driver
    
    url=jdbc:MySQL://127.0.0.1:3306/your_db
    
    username=root
    
    password=root
    
    #<!-- 初始化连接 -->
    initialSize=3
    
    #最大连接数量
    maxActive=20
    
    #<!-- 最大空闲连接 -->
    maxIdle=10
    
    #<!-- 最小空闲连接 -->
    minIdle=3
    
    #<!-- 超时等待时间以毫秒为单位 6000毫秒/1000等于60秒 -->
    maxWait=60000
    
    #JDBC驱动建立连接时附带的连接属性属性的格式必须为这样:[属性名=property;] 
    #注意:"user" 与 "password" 两个属性会被明确地传递,因此这里不需要包含他们。
    connectionProperties=useUnicode=true;characterEncoding=gbk
    
    #指定由连接池所创建的连接的自动提交(auto-commit)状态。
    defaultAutoCommit=true
    
    #driver default 指定由连接池所创建的连接的只读(read-only)状态。
    #如果没有设置该值,则“setReadOnly”方法将不被调用。(某些驱动并不支持只读模式,如:Informix)
    defaultReadOnly=
    
    #driver default 指定由连接池所创建的连接的事务级别(TransactionIsolation)。
    #可用值为下列之一:(详情可见javadoc。)NONE,READ_UNCOMMITTED, READ_COMMITTED, REPEATABLE_READ, SERIALIZABLE
    defaultTransactionIsolation=READ_COMMITTED

    然后需要一个管理Connection的类,示例:JdbcUtils.java

    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.io.InputStream;
    import java.net.MalformedURLException;
    import java.net.URISyntaxException;
    import java.net.URL;
    import java.sql.Connection;
    import java.sql.SQLException;
    import java.util.Properties;
    import javax.sql.DataSource;
    import org.apache.commons.dbcp.BasicDataSourceFactory;
    
    
    public class JdbcUitls {
        //DataSource是DBCP的数据库连接池
    
        private static DataSource ds=null;
    
        //既然是工具类,那就是拿来就能用的,不用new它
    
        //这个静态代码块确保其内容只运行一次,这里在第一次调用的时候,获取一个工厂
    
        static{
    
            try{
    
                //读取资源文件
                Properties prop =new Properties();
                
                URL url;
                try {
                    url = new URL(JdbcUitls.class.getClassLoader().getResource("")+"db.properties");
                                    
                    File file = new File(url.toURI());
                    
                    InputStream is = new FileInputStream(file);
                        
                    prop.load(is);
                        
                } catch (MalformedURLException e1) {
    
                    e1.printStackTrace();
                    
                } catch (FileNotFoundException e) {
    
                    e.printStackTrace();
                    
                } catch (URISyntaxException e) {
    
                    e.printStackTrace();
                    
                } catch (IOException e) {
                    
                    e.printStackTrace();
                }
    //DBCP的连接池工厂
    
                //通过这个工厂,我们获得一个根据资源文件配置的数据库连接池
                
                ds = BasicDataSourceFactory.createDataSource(prop);
    
            }catch (Exception e) {
    
                throw new RuntimeException(e);
    
            }
    
        }
         
        //返回一个数据库连接
    
        public static Connection getConnection() throws SQLException{
    
            //从DataSource中获取一个空闲得连接并返回给调用它的方法
            return ds.getConnection();
            
        }   
       
    }

      最后,通过JdbcUtils类获取数据库连接:Connection conn = JdbcUitls.getConnection();保持良好的习惯去关闭这个连接,这个连接实质上不会关闭,会被连接池收回,DBCP使用了动态代理来截断调用者对Connection.close()方法得直接操作。

  • 相关阅读:
    PAT B1027 打印沙漏 (20 分)
    PAT B1025 反转链表 (25 分)
    PAT B1022 D进制的A+B (20 分)
    PAT B1018 锤子剪刀布 (20 分)
    PAT B1017 A除以B (20 分)
    PAT B1015 德才论 (25 分)
    PAT B1013 数素数 (20 分)
    PAT B1010 一元多项式求导 (25 分)
    HDU 1405 The Last Practice
    HDU 1165 Eddy's research II
  • 原文地址:https://www.cnblogs.com/zealon/p/2873459.html
Copyright © 2011-2022 走看看