设为首页 加入收藏

TOP

欢迎使用CSDN-markdown编辑器
2015-11-21 01:36:32 来源: 作者: 【 】 浏览:0
Tags:欢迎 使用 CSDN-markdown 编辑器

java ee中使用dbcp

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


dbcp

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

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

使用方法

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

准备工作

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

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

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("连接数据库失败!"); } }
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇MongoDB的master-slave及replset.. 下一篇数据迁移经验总结――亿级别多表..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: