程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> java 數據庫連接池,java數據庫連接

java 數據庫連接池,java數據庫連接

編輯:JAVA綜合教程

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

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved