精华内容
下载资源
问答
  • DBCP

    2020-10-03 20:48:12
    DBCP DBCP(DataBase connection pool)数据库连接池是 apache 上的一个Java连接池项目。DBCP通过连接池预先同数据库建立一些连接放在内存中(即连接池中),应用程序需要建立数据库连接时直接到从接池中申请一个连接...

    DBCP

    DBCP(DataBase connection pool)数据库连接池是 apache 上的一个Java连接池项目。DBCP通过连接池预先同数据库建立一些连接放在内存中(即连接池中),应用程序需要建立数据库连接时直接到从接池中申请一个连接使用,用完后由连接池回收该连接,从而达到连接复用,减少资源消耗的目的。

    DBCP所依赖的jar包(以下例子基于如下jar包版本)

    commons-dbcp2-2.1.1.jar commons-logging-1.2.jar commons-pool2-2.4.2.jar

    DBCP配置文件dbcp.properties

    #连接设置
    driverClassName=com.mysql.cj.jdbc.Driver
    url=jdbc:mysql://127.0.0.1:3306/数据库名?useUnicode=true&characterEncoding=utf-8&useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
    username=root//数据库账号
    password=数据库密码
    
    #<!-- 初始化连接 -->
    initialSize=10
    
    #最大连接数量
    maxActive=50
    
    #<!-- 最大空闲连接 -->
    maxIdle=20
    
    #<!-- 最小空闲连接 -->
    minIdle=5
    
    #<!-- 超时等待时间以毫秒为单位 6000毫秒/1000等于60秒 -->
    maxWait=60000
    
    
    #JDBC驱动建立连接时附带的连接属性属性的格式必须为这样:[属性名=property;]
    #注意:"user" 与 "password" 两个属性会被明确地传递,因此这里不需要包含他们。
    connectionProperties=useUnicode=true;characterEncoding=gbk
    
    #指定由连接池所创建的连接的自动提交(auto-commit)状态。
    defaultAutoCommit=true
    
    #driver default 指定由连接池所创建的连接的事务级别(TransactionIsolation)。
    #可用值为下列之一:(详情可见javadoc。)NONE,READ_UNCOMMITTED, READ_COMMITTED, REPEATABLE_READ, SERIALIZABLE
    defaultTransactionIsolation=READ_UNCOMMITTED
    
    

    DBCP连接工具类

    package tools;
    
    import org.apache.commons.dbcp2.BasicDataSource;
    import org.apache.commons.dbcp2.BasicDataSourceFactory;
    import org.apache.log4j.Logger;
    
    import java.io.InputStream;
    import java.lang.reflect.Field;
    import java.lang.reflect.Method;
    import java.sql.*;
    import java.util.*;
    
    public class DbcpPool {
        //获取log对象 ,写log日志
        private static final Logger log= Logger.getLogger(DbcpPool.class);
        private static Connection conn=null;//连接信息
        private static PreparedStatement stmt=null;//执行代理  预载代理
        private static ResultSet rs;//结果集 合
        private static BasicDataSource bs;//
        static {
            loadConfig();
        }
        private static void loadConfig() {
            InputStream is = DbcpPool.class.getResourceAsStream("dbcp.properties");//流读入配置文件
            Properties pr = new Properties();
            try{
                pr.load(is);
                bs= BasicDataSourceFactory.createDataSource(pr);//加载配置信息
            }catch (Exception e){
                System.out.println(e);
            }
        }
    
        private Connection getConnection(){
            try{
                conn= bs.getConnection();
            }catch (SQLException e){
                System.out.println(e);
            }
            return conn;
        }
    
    
        //关闭资源
        private void close(){
            try{
                rs.close();
                stmt.close();
                conn.close();
            }catch (SQLException e){
                log.error("资源关闭异常:",e);
            }
    
        }
    
        //查询方法
        public List<Map<String,Object>> find(String sql) throws SQLException{
            //建立连接
            Connection con=getConnection();
            //执行代理
            stmt = con.prepareStatement(sql);
            //获取结果集;
            rs=stmt.executeQuery();
            //获取结果集数据
            ResultSetMetaData md = rs.getMetaData();
            //获取字段记录条数
            int count=md.getColumnCount();
            //存储数据
            List<Map<String, Object>> l = new ArrayList<>();
            while (rs.next()){
                HashMap<String, Object> mp = new HashMap<>();
                for(int i=0;i<count;i++){
                    String key=md.getColumnName(i+1);
                    Object value=rs.getObject(key);
                    if(value==null) value="";
                    mp.put(key,value);
                }
                l.add(mp);
            }
            //关闭资源
            close();
            return l;
        }
    
        //数据修改方法;
        public boolean dataChange(String sql) throws SQLException{
            //建立连接
            Connection con=getConnection();
            //执行代理
            stmt = con.prepareStatement(sql);
            boolean flag = false;
            int result = -1;// 表示当用户执行添加删除和修改的时候所影响数据库的行数
            result = stmt.executeUpdate();
            flag = result > 0 ? true : false;
            stmt.close();
            con.close();
            conn.close();
            return flag;
        }
    
        //将查询到的结果封装成对象方法
        public <T>T getObject(Map<String,Object> map,Class<T> targetClass){
    
            Iterator<Map.Entry<String, Object>> iterator = map.entrySet().iterator();
            T target = null;
            try {
                target = targetClass.newInstance();// 创建对象
                while (iterator.hasNext()) {
                    Map.Entry<String, Object> entry = iterator.next();
                    String setMethodName = "set" + (entry.getKey().substring(0,1).toUpperCase() + entry.getKey().substring(1));
                    Field declaredField = targetClass.getDeclaredField(entry.getKey());
                    Object value = entry.getValue();
                    Method set_method = targetClass.getMethod(setMethodName, declaredField.getType());
                    set_method.invoke(target,value);// 反射执行
    
                }
            } catch (Exception e) {
                log.error("对象封装失败:",e);
            } finally {
                return target;
            }
    
        }
    
    }
    
    
    展开全文
  • dbcp

    2018-11-11 15:35:17
    1、 nested exception is java.lang.NoClassDefFoundError: org/apache/commons/pool2/... 缺少commons-pool2.jar(commons-dbcp2-2.5.0.jar 搭配commons-pool2-2.6.0.jar) 2、Failed to convert p...
    1、 nested exception is java.lang.NoClassDefFoundError: org/apache/commons/pool2/SwallowedExceptionListener
    	缺少commons-pool2.jar(commons-dbcp2-2.5.0.jar 搭配commons-pool2-2.6.0.jar)
    2、Failed to convert property value of type 'java.lang.String' to required type 'java.sql.Driver' for property 'driver'
    	dbcp2 使用driverClassName而且maxActive也没有了
    3、java.lang.UnsupportedOperationException: Manual close is not allowed over a Spring managed SqlSession
    	因为和spring整合把会话的关闭交给了spring,所以不能自己关闭,在相关的类上去掉即可。
    

    dbcp2配置文件

    展开全文
  • Apache DBCP

    2017-09-10 20:44:48
    Apache DBCP所需的jar; Commons-dbcp.jar、 Commons-logging.jar Commons-Pool.jar 解压后jar文件夹下 还包括source
  • DBCP jar包

    2018-05-09 22:22:25
    DBCP jar包,DBCP jar包,DBCP jar包,DBCP jar包,DBCP jar包
  • dbcp配置

    2012-10-11 19:27:15
    dbcp配置
  • Apache Commons DBCP Apache Commons DBCP软件实现数据库连接池 文献资料 可以在上找到更多信息。可以浏览 。与Apache Commons DBCP的使用有关的问题应张贴到。 在哪里可以获得最新版本? 您可以从我们的下载源代码...
  • commons-dbcp

    2018-12-02 15:33:40
    org.apache.commons.dbcp.BasicDataSource commons-dbcp jar包下载
  • dbcp连接池

    2018-08-15 19:33:52
    dbcp连接池的JAR commons-dbcp提供给开发者一个可用的数据库连接池,顾名思义commons-dbcp缓存了很多数据库的连接。难么这个缓存的功能是在dbcp中实现的吗?不是的,其实dbcp中的数据库的缓存的功能是有commons-...
  • DBCP入门

    2019-11-29 11:42:44
    文章目录DBCP简介DBCP作用DBCP使用步骤DBCP详细学习 DBCP简介 数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;释放空闲时间超过最大空闲时间的...

    在这里插入图片描述

    DBCP简介

    数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能。

    DBCP作用

    1. 内存中开辟一个缓冲区
    2. 在缓冲区中创建对象(初始化个数)
    3. 当有客户端来申请该对象时,从缓冲区中获取一个对象
    4. 缓冲区有一个最小空闲数设置,(保证每一个客户端来时都能获取一个对象)
    5. 缓冲区有最大数量限制
    6. 当一个客户端释放对象时,缓冲区会回收该对象,让该对象处于等待状态
    7. 如果一个客户端申请对象时,没有空闲对象,则处于等待状态(最大超时时间)

    DBCP使用步骤

    1. 导入jar包
      在这里插入图片描述
    2. 创建主配置文件(放在src目录下)
    driverClassName = com.mysql.jdbc.Driver
    url = jdbc:mysql://localhost:3306/jdbcstudy
    username = root
    password = 123456
    maxActive = 5
    initialSize = 2
    minIdle = 2
    maxWait = 5000
    
    1. 测试
    import java.io.IOException;
    import java.io.InputStream;
    import java.sql.Connection;
    import java.sql.SQLException;
    import java.util.Properties;
    
    import javax.sql.DataSource;
    
    import org.apache.commons.dbcp.BasicDataSourceFactory;
    
    public class TestDBCP {
        private static DataSource ds;
        static {
            Properties p = new Properties();
            InputStream inStream = TestDBCP.class
                    .getClassLoader()
                    .getResourceAsStream("dbcp.properties");
            try {
                p.load(inStream);;
                ds = BasicDataSourceFactory.createDataSource(p);
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    
        public static void main(String[] args) throws SQLException, InterruptedException {
            Connection c = ds.getConnection();
            System.out.println(c.hashCode());
            System.out.println(ds.getConnection().hashCode());
            System.out.println(ds.getConnection().hashCode());
            System.out.println(ds.getConnection().hashCode());
            System.out.println(ds.getConnection().hashCode());
            new Thread() {
                @Override
                public void run() {
                    try {
                        Connection c = ds.getConnection();
                        System.out.println(c.hashCode());
                    } catch (SQLException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            }.start();
    
            Thread.sleep(4000);
            c.close();
        }
    }
    

    DBCP详细学习

    http://commons.apache.org/proper/commons-dbcp/download_dbcp.cgi

    展开全文
  • DBCP:DataBase Connection Pool 1、需要的jar:commons-dbcp.jar commons-pool.jar 2、把DBCP的配置文件(dbcpconfig.properties)拷贝到构建路径中 3、创建类:DBCPUtil dbcpconfig.properties: mysql设置内容如下...

    DBCP:DataBase Connection Pool 1、需要的jar:commons-dbcp.jar commons-pool.jar 2、把DBCP的配置文件(dbcpconfig.properties)拷贝到构建路径中 3、创建类:DBCPUtil dbcpconfig.properties: mysql设置内容如下: #连接设置driverClassName=com.mysql.j

    DBCP:DataBase Connection Pool

    1、需要的jar:commons-dbcp.jar commons-pool.jar

    2、把DBCP的配置文件(dbcpconfig.properties)拷贝到构建路径中

    3、创建类:DBCPUtil

    dbcpconfig.properties:

    mysql设置内容如下:

    #连接设置

    driverClassName=com.mysql.jdbc.Driver

    url=jdbc:mysql://localhost:3306/day16

    username=root

    password=liang

    #

    initialSize=10

    #最大连接数量

    maxActive=50

    #

    maxIdle=20

    #

    minIdle=5

    #

    maxWait=60000

    #JDBC驱动建立连接时附带的连接属性属性的格式必须为这样:[属性名=property;]

    #注意:"user" 与 "password" 两个属性会被明确地传递,因此这里不需要包含他们。

    connectionProperties=useUnicode=true;characterEncoding=utf8

    #指定由连接池所创建的连接的自动提交(auto-commit)状态。

    defaultAutoCommit=true

    #driver default 指定由连接池所创建的连接的只读(read-only)状态。

    #如果没有设置该值,则“setReadOnly”方法将不被调用。(某些驱动并不支持只读模式,如:Informix)

    defaultReadOnly=

    #driver default 指定由连接池所创建的连接的事务级别(TransactionIsolation)。

    #可用值为下列之一:(详情可见javadoc。)NONE,READ_UNCOMMITTED, READ_COMMITTED, REPEATABLE_READ, SERIALIZABLE

    #oracle只支持READ_COMMITTED(默认),SERIALIZABLE

    defaultTransactionIsolation=REPEATABLE_READ

    DBCPUtil:

    package cn.itcast.util;

    import java.io.InputStream;

    import java.sql.Connection;

    import java.sql.ResultSet;

    import java.sql.SQLException;

    import java.sql.Statement;

    import java.util.Properties;

    import javax.sql.DataSource;

    import org.apache.commons.dbcp.BasicDataSourceFactory;

    public class DBCPUtil {

    private static DataSource ds;

    static{

    try {

    InputStream in = DBCPUtil.class.getClassLoader().getResourceAsStream("dbcpconfig.properties");

    Properties props = new Properties();

    props.load(in);

    ds = BasicDataSourceFactory.createDataSource(props);

    } catch (Exception e) {

    e.printStackTrace();

    }

    }

    public static Connection getConnection(){

    try {

    return ds.getConnection();

    } catch (SQLException e) {

    throw new RuntimeException(e);

    }

    }

    public static void release(ResultSet rs,Statement stmt,Connection conn){

    if(rs!=null){

    try {

    rs.close();

    } catch (SQLException e) {

    e.printStackTrace();

    }

    rs = null;

    }

    if(stmt!=null){

    try {

    stmt.close();

    } catch (SQLException e) {

    e.printStackTrace();

    }

    stmt = null;

    }

    if(conn!=null){

    try {

    conn.close();

    } catch (SQLException e) {

    e.printStackTrace();

    }

    conn = null;

    }

    }

    }

    f68f2add0b68e4f9810432fce46917b7.png

    本文原创发布php中文网,转载请注明出处,感谢您的尊重!

    展开全文
  • dbcp监控

    2020-09-23 20:28:09
    重写dbcp数据源,主要是重写获取连接的方法,从而实现监控功能。 步骤 1.获取数据源对象 重写dbcp数据源,主要是重写获取连接的方法,然后获取数据源对象,打印连接池的监控数据,并且计算获取数据库连接的耗时。 2....
  • DBCP-1.5.6

    2019-04-08 12:19:34
    这是一个封装好的数据库连接池,可以直接调用。DBCP
  • DBCP

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,156
精华内容 5,262
关键字:

dbcp