dbcp,c3p0连接池,tomcat连接池的配置

什么事数据库连接池

  • 数据库连接池是程序启动的时候创建足够的数据库连接,将这些 连接放到一个连接池中,如果程序要使用,动态的由程序申请,使用,释放

传统的数据库连接方式和数据库连接池的区别

  • 传统方法
    • 加载驱动程序
    • 通过jdbc建立连接
    • 使用sql语句操作数据
    • 关闭连接
  • 数据库连接池方法
    • 程序初始化时创建连接池
    • 向连接池申请链接
    • 使用sql操作数据库
    • 归还连接
    • 程序退出时,释放所有的资源

 连接池的优势

  • 减少链接创建时间:连接池中的连接是已经创建号的,可以重复使用,获取后可以直接访问数据库,因此减少了连接创建的时间
  • 简化编程模式:每一个线程使用连接池的连接,就像使用自己的连接一样,可以操作数据
  • 控制 资源的使用:如果没有连接池,那么系统每次需要一个连接就需要,创建一个,不使用了,还要销毁,这样重复的创建影响系统的性能,和资源的浪费。

连接池的原理

  • 连接池建立的开始,在系统的初始化的时候,会建立连接池,连接池内有设置的接个连接对象,当需要使用的使用,可以从连接池中获取
  • 连接池的管理:
    • 当用户请求的一个连接对象的时候,连接池,会先从连接池中查看,有没有空闲连接,如果有,那么就分给客户,如果没有,要查看是连接数量是否达到最大的连接数,如果没有达到,那么就创建一个给客户,如果达到了,那么就让客户等待,如果超过等待时间,那么抛出异常。
    • 当客户释放连接的时候,判断这个连接是否超过了使用的次数,如果超过了,那么就销毁,如果没有,那么就在放入连接池,重复使用。
  • 关闭连接池:当用户关闭程序的时候,销毁连接池中的所有的额连接,这个过程正好与创建连接池相反。

使用dbcp链接池获取连接对象

  • 创建Java项目
  • 导入jar包
    • commons-dbcp
    • commons-pool
  • 方法
         @Test
        public void test(){
    //      创建连接池对象
            BasicDataSource data = new BasicDataSource();
    //      设置四大参数
            data.setDriverClassName("com.mysql.jdbc.Driver");
            data.setUrl("jdbc:mysql://localhost:3306/mydatabase1");
            data.setUsername("root");
            data.setPassword("root");
    //      设置连接池特点
            data.setMaxActive(20);
            data.setMinIdle(3);
            data.setInitialSize(5);
            //获取连接对象
            Connection con = null;
            try {
                con = data.getConnection();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            System.out.println(con.getClass().getName());
        }

使用c3p0连接池获取连接

  • 导入jar 包
    • c3p9-jar
    • mchange-commons-jar
  • 方法

    • 不使用配置文件,手动配置

                  @Test
          public void test() throws PropertyVetoException, SQLException{
      //      创建连接池对象
              ComboPooledDataSource com = new ComboPooledDataSource();
      //      设置四大参数
              com.setDriverClass("com.mysql.jdbc.Driver");
              com.setJdbcUrl("jdbc:mysql://localhost:3306/mydatabase1");
              com.setUser("root");
              com.setPassword("root");
      
      //  设置连接池属性
              com.setMaxPoolSize(200);
              com.setMinPoolSize(2);
              com.setInitialPoolSize(10);
              com.setAcquireIncrement(2);
      
      //      获取连接对象
              Connection con = com.getConnection();
              System.out.println(con.getClass().getName());
              con.close();
          }
    • 使用配置文件,自动配置
      • 在src目录下创建c3p0-config.xml文件
      • 配置文件的格式
        这里写图片描述
      • 直接创建连接值对象,获取连接
        这里写图片描述
      • 创建连接池对象的时候,传入指定配置名称这里写图片描述
    • 方式的区别
      • 使用配置文件可以很好的配置练级池,效率很高,值的推荐使用
      • 手动配置的,后期不容易修改。

    tomcat连接池配置

    JNDI

  • Java 命名和目录接口
  • jndi的作用是在服务器 上配置资源,然后通过统一的方式来 获取资源
  • 这里的资源就是连接池,这样,整个项目就可以通过统一的方式来获取连接池对象了

tomcat 配置JNDI资源

  • 在tomcat目录下的conf-Catalina-创建文件,名字是:==项目名.xml 文件==
  • 格式:这里写图片描述
    • name 指定资源的名称,这个名称可以自定义,在 获取资源的时候需要使用这个名称
    • factory 用来创建资源的工厂,这个值一般是固定的,不用修改
    • type 资源类型,给出的类型应该是我们要连接的数据库的连接池的类型
    • bar :表示资源的属性,如果资源存在名为bar的属性,那么就配置bar的值

获取资源

配置资源的目的是为了获取资源,只要启动了tomcat,那么就可以在项目中的任何类中通过JNDI的方式获取资源了
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值