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

        

  • 相关阅读:
    字符集WideCharToMultiByte
    [HDF]hdf-4.2.6类库的使用
    [GDAL]读取HDF格式的calipso数据
    C#读写BitMap及颜色相乘
    [Slimdx]顶点和索引缓冲,绘制了2个分离的三角形
    [GDAL]写入shp
    几个环境学概念
    MIConvexHull
    几个力学概念
    [转载]如何破解Excel VBA密码
  • 原文地址:https://www.cnblogs.com/charliePU/p/5579149.html
Copyright © 2011-2022 走看看