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

        

  • 相关阅读:
    SDN私享汇(十一):OvS 架构介绍及开发实践
    SDN控制器之OVN实验六:配置集成容器的OVN网络
    OVN简介
    使用ovn-trace分析OVN 逻辑流表(Logical Flow)
    Neutron系列 : Neutron OVS OpenFlow 流表 和 L2 Population(8)
    Neutron系列 : Neutron OVS OpenFlow 流表 和 L2 Population(7)
    理解OpenShift(1):网络之 Router 和 Route
    linux-bonding——
    Neutron 理解 (4): Neutron OVS OpenFlow 流表 和 L2 Population [Netruon OVS OpenFlow tables + L2 Population]
    [连载型] Neutron系列(20):Neutron L3 Agent HA 之 虚拟路由冗余协议(VRRP)【下】
  • 原文地址:https://www.cnblogs.com/charliePU/p/5579149.html
Copyright © 2011-2022 走看看