数据库连接池

思路:

     a.当数据库需要插入大文本时可用采用:批处理jdbc语句提高处理速度。

     b.当遇到大文本数据时,比如图片数据和影视数据及万字以上数据时可采用LOB即大文本对象,用来存储二进制和文本数据。理论上最大可以存储4GB。当然如果你的内存够大的情况下。

     c.JDBC驱动处理元数据.DatabaseMetaData类 通过ConnectiongetMetaData()获得DatabaseMetadata

            DatabaseMetaData dmd = conn.getMetaData(); 

     d. ResultSetMetaData元数据。获取方法

           ResultSet rs = stmt.executeQuery("select * from students");

           ResultSetMetaData rsmd = rs.getMetaData();

可用于获取结果集的各个列数据及其类型。应用实例:将数据库的数据转到xml文件中。

     e.dbcp连接池和c3p0连接池。tomcat用的是dbcp类型。hibernate使用的是c3p0.

 

数据连接池技术和数据库批量查询:

批量查询:

PreparedStatement pstmt=conn.prepareStatement(sql);

pstmt.setInt(1, i);

              pstmt.setString(2, "name"+i);

              pstmt.setString(3, "email"+i);

  //将一组参数添加到此 PreparedStatement 对象的批处理命令中

              pstmt.addBatch();

  if(i%1000==0){

                // 将一批命令提交给数据库来执行,如果全部命令执行成功,则返回更新计数组成的数组

                pstmt.executeBatch();

                //清空此 Statement 对象的当前 SQL 命令列表。

                pstmt.clearBatch();

}

 

当达到指定的批量后清空批查询语句,并重新填充.循环至所有条数

 

dbcp连接池:

 

使用DBCP连接池:

   方法一

   * 引入jar包

       * commons-dbcp.jar; common-pools.jar

   * 如何使用   

         BasicDataSource  bds=new BasicDataSource();

         //设置用户名

         bds.setUsername("root");

         //设置密码

         bds.setPassword("root");

         //设置驱动类

         bds.setDriverClassName("com.mysql.jdbc.Driver");

         //设置url

         bds.setUrl("jdbc:mysql://localhost:3306/test");

         //设置初始化连接数

         bds.setInitialSize(4);

         //设置最小空闲数,防止当洪峰到来时,再次申请连接引起的性能开销

         bds.setMinIdle(5);

         //设置最大空闲数,放洪峰过后,连接池中的连接过多

         bds.setMaxIdle(7);

         //设置最大连接数

         bds.setMaxActive(20);

         //设置等待时间,以毫秒为单位,设置为-1表示无限期等待

         bds.setMaxWait(5000);

         //获取连接

         conn=bds.getConnection();

        

方法二:

  * 引入jar包

       * commons-dbcp.jar; common-pools.jar

   * 如何使用

              Properties prop=new Properties();

              prop.setProperty("driverClassName", "com.mysql.jdbc.Driver");

              prop.setProperty("password", "root");

              prop.setProperty("username", "root");

              prop.setProperty("url","jdbc:mysql://localhost:3306/test");

              prop.setProperty("minIdle", "4");

              prop.setProperty("maxIdle", "6");

              prop.setProperty("maxWait", "5000");

              prop.setProperty("maxActive ", "20");

             

              DataSource dataSource=null;

              try {

                   dataSource=BasicDataSourceFactory.createDataSource(prop);

              } catch (Exception e) {

                   e.printStackTrace();

              }

             //获取连接

             conn=dataSource.getConnection();

 

c3p0连接池:

       ComboPooledDataSource cpds=null;
  
   //创建c3p0数据源对象
   cpds = new ComboPooledDataSource();
   //设置驱动
   cpds.setDriverClass("com.mysql.jdbc.Driver");
   //设置url
   cpds.setJdbcUrl("jdbc:mysql://localhost:3306/test" );
   //设置用户名
   cpds.setUser("root");
   //设置密码
   cpds.setPassword("root");
   // the settings below are optional -- c3p0 can work with defaults
   //设置最小连接数
   cpds.setMinPoolSize(5);
   
   //每次申请连接的数量
   cpds.setAcquireIncrement(5);
   
   //设置最大连接数
   cpds.setMaxPoolSize(20);
   

dbcp和c3p0比较:

 Hibernate废弃的dbcp连接池而是用c3p0,肯定是有原因的。dbcp连接池和weblogic会产生一些兼容性问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值