码迷,mamicode.com
首页 > 其他好文 > 详细

欢迎使用CSDN-markdown编辑器

时间:2015-07-29 23:08:44      阅读:142      评论:0      收藏:0      [点我收藏+]

标签:javaee   dbcp   数据库连接池   

java ee中使用dbcp

使用java进行网站开发时,访问数据库数据必不可少,而dbcp在管理数据库连接方面有着独特的优势。


dbcp

DBCP(DataBase connection pool),数据库连接池。是 apache 上的一个 java 连接池项目,也是 tomcat 使用的连接池组件。单独使用dbcp需要2个包:commons-dbcp.jar,commons-pool.jar由于建立数据库连接是一个非常耗时耗资源的行为,所以通过连接池预先同数据库建立一些连接,放在内存中,应用程序需要建立数据库连接时直接到连接池中申请一个就行,用完后再放回去。 —— [ 百度百科 ]

简单说就是一个apache已经编好的数据库连接池,直接拿来用就可以。比自己写的访问数据的程序要快且高效。

使用方法

  • 环境说明
    请注意:本人使用mysql数据库

  • 准备工作

    1. mysql-connector-java-5.1.26-bin.jar,这是mysql的jdbc的驱动程序,下载后放到WebContent/WEB-INF/lib文件下

    2. commons-dbcp-1.4.jar,commons-pool-1.5.6.jar,这两个jar是dbcp所必须的两个jar包,下载后引入到工程中(也就是以built path的方式引入到工程中)

    3. commons-logging-1.1.3.jar,这个一个日志jar包,我想说的是,如果是开发项目的话,尽量保持使用日志的习惯吧,做好日志对项目开发,项目维护都有很大的帮助。同样以built path的形式引入到工程中

代码块

如果准备工作已经完成的话,下面开始上代码了

DBManager类

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;


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);
            e.printStackTrace();
        }

    }
    private DBManager(){}

    public static final Connection getConn(){
        Connection conn = null;
        try{
            conn = dataSource.getConnection();
        }catch(SQLException e){
            log.error("获取数据库连接失败:" + e);
        }
        return conn;
    }

    public static void closeConn(Connection conn){
        try{
            if(conn != null && !conn.isClosed()){
                conn.setAutoCommit(true);
                conn.close();
            }
        }catch(SQLException e){
            log.error("关闭数据库连接失败:" + e);
        }
    }
}

其中,configFile = “dbcp.properties” 实际指的是一个配置文件,具体内容如下:

dbcp.properties

driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/数据库名
username=root        
password=1234556
maxActive=30
maxIdle=10
maxWait=1000
removeAbandoned=true
removeAbandonedTimeout=180

各参数的意义,请自行搜索,在此不赘述。
注意:dbcp.properties文件是放在src文件下的

测试类 TomcatDbTest类

package DBbase;

import java.sql.Connection;
import java.sql.SQLException;

public class TomcatDbTest {

    public static void main(String[] args) {    
        Connection conn = DBManager.getConn();
        if(conn != null){
            System.out.println("成功建立连接");
            try {
                conn.close();
            } catch (SQLException e) {
                System.out.println("未成功关闭连接");
                e.printStackTrace();
            }
            return;
        }
        System.out.println("连接数据库失败!");

    }
}

结束语

以上说明和代码参考了如下网站,向提供者致敬。
[代码和说明的参考网站 ]

版权声明:本文为博主原创文章,未经博主允许不得转载。

欢迎使用CSDN-markdown编辑器

标签:javaee   dbcp   数据库连接池   

原文地址:http://blog.csdn.net/shijunjoy/article/details/47134355

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!