zoukankan      html  css  js  c++  java
  • java 数据库连接池

     1. About

        java利用jdbc直接连接数据库,经常取得连接,用完释放,很浪费系统资源

    2. Code

       Java代码

    package com.cdv.mam.db;
    
    import java.sql.Connection;
    import java.sql.DatabaseMetaData;
    import java.sql.SQLException;
    import java.util.Properties;
    
    import javax.sql.DataSource;
    
    import org.apache.commons.dbcp.BasicDataSourceFactory;
    import org.apache.commons.logging.Log;
    import org.apache.commons.logging.LogFactory;
    
    //import org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory;
    
    /**
     * tomcat数据库连接池管理类<br>
     * 使用为tomcat部署环境<br>
     * 需要在类路径下准备数据库连接配置文件dbcp.properties
     * 
     */
    public class DBManager {
        private static final Log log = LogFactory.getLog(DBManager.class);
        private static final String configFile = "dbcp.properties";
    
        private static DataSource dataSource;
    
        static {
            Properties dbProperties = new Properties();
            try {
                dbProperties.load(DBManager.class.getClassLoader()
                        .getResourceAsStream(configFile));
                dataSource = BasicDataSourceFactory.createDataSource(dbProperties);
    
                Connection conn = getConn();
                DatabaseMetaData mdm = conn.getMetaData();
                log.info("Connected to " + mdm.getDatabaseProductName() + " "
                        + mdm.getDatabaseProductVersion());
                if (conn != null) {
                    conn.close();
                }
            } catch (Exception e) {
                log.error("初始化连接池失败:" + e);
            }
        }
    
        private DBManager() {
        }
    
        /**
         * 获取链接,用完后记得关闭
         * 
         * @see {@link DBManager#closeConn(Connection)}
         * @return
         */
        public static final Connection getConn() {
            Connection conn = null;
            try {
                conn = dataSource.getConnection();
            } catch (SQLException e) {
                log.error("获取数据库连接失败:" + e);
            }
            return conn;
        }
    
        /**
         * 关闭连接
         * 
         * @param conn
         *            需要关闭的连接
         */
        public static void closeConn(Connection conn) {
            try {
                if (conn != null && !conn.isClosed()) {
                    conn.setAutoCommit(true);
                    conn.close();
                }
            } catch (SQLException e) {
                log.error("关闭数据库连接失败:" + e);
            }
        }
    
    }

      properties文件(dbcp.properties)

    #数据库驱动
    driverClassName=com.mysql.jdbc.Driver
    #数据库连接地址
    url=jdbc:mysql://192.168.1.41:3306/dmc
    #用户名
    username=root
    #密码
    password=root
    
    #连接池的最大数据库连接数。设为0表示无限制
    maxActive=30
    #最大空闲数,数据库连接的最大空闲时间。超过空闲时间,数据库连
    #接将被标记为不可用,然后被释放。设为0表示无限制
    maxIdle=10
    #最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制
    maxWait=1000
    
    #超过removeAbandonedTimeout时间后,是否进 行没用连接(废弃)的回收(默认为false,调整为true)
    removeAbandoned=true
    #超过时间限制,回收没有用(废弃)的连接(默认为 300秒,调整为180)
    removeAbandonedTimeout=180

    用到的jar

  • 相关阅读:
    maven基础依赖外部lib包(依赖钉钉sdk为例)
    JVM的内存区域划分
    EF6 根据数据库字段说明,生成字段注释
    js上传图片,js图片转换为Base64
    Jquery用append()方法新增加的元素事件失效
    MVC添加区域路由问题
    JObject获取JSON格式字符串数据
    百度地图WebApi根据地址解析经纬度和根据经纬度解析地址
    sqlserver函数根据经纬度计算两点之间的距离
    AdminLTE-2.4.0-rc文件添加到项目中报错 错误 1 “tsc.exe”已退出,代码为 1。 M.Website
  • 原文地址:https://www.cnblogs.com/rocky-fang/p/5896827.html
Copyright © 2011-2022 走看看