• 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

  • 相关阅读:
    Java8简明教程第二章
    Java8简明教程-2
    Java8简明教程第一章
    Java8简明教程-1
    redis的初级使用
    hdu--4681--dp
    hdu--5091--线段树
    hdu--1542&&1255&1828--线段树<扫描线>
    hdu--5139--bc
    hdu--5128--计算几何<算不上.暴力模拟> && hdu--5131--初级cmp
  • 原文地址:https://www.cnblogs.com/rocky-fang/p/5896827.html
Copyright © 2020-2023  润新知