zoukankan      html  css  js  c++  java
  • JDBC数据库连接池之dbcp

    一、连接池的作用

    数据库的连接是一种很重要的资源,如果一个项目比较小,连接数据库的次数比较少,我们可以采取直连的方式:“获取连接----使用----关闭连接”。但是如果一个网站访问量很大,假如同时有几百万个用户,这时候就会创建几百万个连接,这样就很容易使数据库崩溃,从而使网站瘫痪。这时候数据库的连接池技术就可以起到作用了,维护连接池中的连接个数,如果来个请求连接,先看连接池中是否有空闲的连接,如果有就分配出去,用完就释放,否则这个请求就必须等待。这就很好的解决了数据库的压力。这就像去餐厅一样,人多的时候我们就得排号等待空闲的位置。

    二、dbcp的使用

    1.导入jar包。

    dbcp依赖3个jar包。

    commons-dbcp2-2.1.1.jar

    commons-logging-1.1.1.jar

    commons-pool2-2.4.2.jar

    另外连接数据库还需要单独的jar包,我的数据库是MySql,所以我用的是:mysql-connector-java-5.1.14.jar

    2.配置参数

    方式1.:通过配置文件配置(dbcp.properties)

    1 driverClassName=com.mysql.jdbc.Driver
    2 url=jdbc:mysql://localhost/paper_tag
    3 username=root
    4 password=admin
    5 maxActive=30
    6 maxIdle=10
    7 maxWait=1000
    8 initialSize=5
    View Code

    方式2:通过代码配置

           BasicDataSource bds = new BasicDataSource();  
           bds.setUrl(url);  
           bds.setDriverClassName(driverClassName);  
           bds.setUsername(username);  
           bds.setPassword(password);  
           bds.setInitialSize(initialSize);  
           bds.setMaxActive(maxActive);  
           bds.setMinIdle(minIdle);  
           bds.setMaxIdle(maxIdle);  
           bds.setMaxWait(maxWait);  
    

      

    3. 获取连接

    • 下面是获取连接的类DBCPUtil

      private static DataSource ds;
      
          private static final String configFile = "/dbcp.properties";
      
          public DBCPUtil() {
              initDBCP();
          }
      
          private void initDBCP() {
              Properties prop = new Properties();
              try {
                  prop.load(Object.class.getResourceAsStream(configFile));
                  ds = BasicDataSourceFactory.createDataSource(prop);
              } catch (IOException e) {
                  e.printStackTrace();
              } catch (Exception e) {
                  e.printStackTrace();
              }
          }
      
          public Connection getConn() {
              Connection conn = null;
              if(ds != null) {
                  try {
                      conn = ds.getConnection();
                      conn.setAutoCommit(false);
                  } catch (SQLException e) {
                      e.printStackTrace();
                  }
              }
              return conn;
          }
      
          public static void main(String[] args) {
              DBCPUtil db = new DBCPUtil();
              System.out.println(db.getConn());
          }
      }
      

        

  • 相关阅读:
    如何使用 SPICE client (virt-viewer) 来连接远程虚拟机桌面?
    小米手机会不会更好
    5年一梦
    每天进步一点点——分布式文件系统下的本地缓存
    iOS开发中的NSDateFormatter日期格式解析总结
    IOS假设将一个十六进制的color转换成UIColor,非常有用
    HH实习(hpu1287)(斐波那契运用)
    学习用CMake来编写Qt程序
    【MFC设置静态文本框背景为透明】
    排序(3)---------冒泡排序(C语言实现)
  • 原文地址:https://www.cnblogs.com/charliePU/p/5579149.html
Copyright © 2011-2022 走看看