Batch和Fetch两个特性非常重要。
Batch相当于JDBC的写缓冲,Fetch相当于读缓冲

如果把JDBC类比为JAVA IO的话,
不使用Fetch和Batch相当于直接使用FileInputStream和FileOutputStream
而设置了Fetch和Batch相当于使用BufferedInputStream和BufferedOutputStream

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.util.ArrayList;

import java.util.List;

public class Test {

    private static int _1W = 10000;

    private static List<String> list = new ArrayList<String>(100 * _1W);

    static {

        for (int i = 0; i < 10 * _1W; i++) {

            list.add(String.valueOf(i));

        }

    }

    public static void main(String[] args) throws ClassNotFoundException, SQLException {

        long start = System.currentTimeMillis();

        fetchRead();

        long end = System.currentTimeMillis();

        System.out.println((end - start) + "ms");

    }

    public static void batchWrite() throws SQLException, ClassNotFoundException {

        // 1108ms

        Class.forName("oracle.jdbc.OracleDriver");

        Connection connection = DriverManager.getConnection("jdbc:oracle:thin:127.0.0.1:1521:orcl", "xxx", "xxx");

        connection.setAutoCommit(false);

        PreparedStatement cmd = connection.prepareStatement("insert into t values(?)");

        for (int i = 0; i < list.size(); i++) {

            cmd.setString(1, list.get(i));

            cmd.addBatch();

            if (i % _1W == 0) {

                cmd.executeBatch();

            }

        }

        cmd.executeBatch();

        connection.commit();

    }

    public static void jdbcWrite() throws ClassNotFoundException, SQLException {

        // 28189ms

        Class.forName("oracle.jdbc.OracleDriver");

        Connection connection = DriverManager.getConnection("jdbc:oracle:thin:127.0.0.1:1521:orcl", "xxx", "xxx");

        connection.setAutoCommit(false);

        PreparedStatement cmd = connection.prepareStatement("insert into t values(?)");

        for (String s : list) {

            cmd.setString(1, s);

            cmd.execute();

        }

        connection.commit();

    }

    public static void jdbcRead() throws ClassNotFoundException, SQLException {

        // 3120ms

        Class.forName("oracle.jdbc.OracleDriver");

        Connection connection = DriverManager.getConnection("jdbc:oracle:thin:127.0.0.1:1521:orcl", "xxx", "xxx");

        connection.setAutoCommit(false);

        PreparedStatement cmd = connection.prepareStatement("select * from t");

        ResultSet rs = cmd.executeQuery();

        int i = 0;

        while (rs.next()) {

            rs.getString(1);

            i = i + 1;

        }

        System.out.println("count:" + i);

    }

    public static void fetchRead() throws ClassNotFoundException, SQLException {

        //764ms

        Class.forName("oracle.jdbc.OracleDriver");

        Connection connection = DriverManager.getConnection("jdbc:oracle:thin:127.0.0.1:1521:orcl", "xxx", "xxx");

        connection.setAutoCommit(false);

        PreparedStatement cmd = connection.prepareStatement("select * from t");

        cmd.setFetchSize(_1W);

        ResultSet rs = cmd.executeQuery();

        int i = 0;

        while (rs.next()) {

            rs.getString(1);

            i = i + 1;

        }

        System.out.println("count:" + i);

    }

} 

java_JDBC(3)的更多相关文章

  1. JAVA_JDBC

    测试类: 1 import java.util.ArrayList; import java.util.List; /** * 创建数据库: * 1.加载驱动 * Class.forName(&quo ...

  2. java_JDBC(4)

    一.Statement import java.sql.*; public class TestJDBC { public static void main(String[] args) { Conn ...

  3. java_JDBC字段对应

    地址: http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/java.102/B19275-03/datacc.htm ...

  4. java_JDBC(2)

    1.Statement 每次执行sql语句,数据库都要执行sql语句的编译 ,最好用于仅执行一次查询并返回结果的情形,效率高于PreparedStatement. 2.PreparedStatemen ...

  5. java_JDBC(1)

    Java连接Oracle步骤: 1.注册加载驱动 驱动名:DRIVER="oracle.jdbc.driver.OracleDriver";Class.forName(" ...

  6. Java_JDBC一般写法

    JDBC是Java DataBase Connectivity,Java程序访问数据库的标准接口. 如果是maven工程先加入依赖的jar包: <dependency> <group ...

  7. Java_JDBC连接数据库_使用读取配置文件的方式

    package com.homewoek3_4.dao; import java.io.IOException; import java.io.InputStream; import java.sql ...

  8. Java_JDBC连接数据库

    package com.accp.dao; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Pre ...

  9. Java_JDBC 连接

    今天,接着上一篇( mysql 数据库 )的基础上,我就写一下 Java 怎样连接数据库,并且操作数据库. 首先,我们先来准备一下数据库连接的驱动: mysql 的 jar 包下载地址:https:/ ...

随机推荐

  1. Java语言的学习

    众所周知,Java是上个世纪的语言产物,到现在已经有多个分支,Java和OC.Swift一样都是面向对象的语言,目前学习Java是想接触一下后台的开发,当然iOS也不会丢掉,毕竟多学一点不是坏事. 今 ...

  2. c#之向ftp服务器传文件

    .Net提供了FtpWebRequest类,代码如下: using System; using System.Collections.Generic; using System.IO; using S ...

  3. java 单元测试 注入

    ApplicationContext appContext = new ClassPathXmlApplicationContext("appContext.xml"); MySQ ...

  4. HTML学习(四)样式

    通过使用 HTML4.0,所有的格式化代码均可移出 HTML 文档,然后移入一个独立的样式表. 实例:例1:本例演示如何使用添加到 <head> 部分的样式信息对 HTML 进行格式化.& ...

  5. Android studio中添加外部的jar包

    1.下载相关的jar包, 2,将jar包复制到当前module的lib中 3.选择新添加的jar包.右键.add as library 就好啦

  6. ZOJ 2059 The Twin Towers

    双塔DP. dp[i][j]表示前i个物品,分成两堆(可以不全用),价值之差为j的时候,较小一堆的价值为dp[i][j]. #include<cstdio> #include<cst ...

  7. IOS开发使用YiRefresh进行刷新

    1.将YiRefresh下载后,拖进项目 YiRefresh地址:https://github.com/coderyi/YiRefresh 2.添加两个头文件 #import "YiRefr ...

  8. IP头,TCP头,UDP头,MAC帧头定义(转)

    源:IP头,TCP头,UDP头,MAC帧头定义 一.MAC帧头定义 /*数据帧定义,头14个字节,尾4个字节*/ typedef struct _MAC_FRAME_HEADER { ]; //目的m ...

  9. OO设计原则 -- OO设计的原则及设计过程的全面总结

    这部分增加一点自己的感想,OO设计原则下面讲述的很清晰;看完之后有点感想如果我们在实际开发当中能够把这些原则熟烂于心的话那我们的代码质量和个人能力会有很显著的提神.根据自己的实际经验看很多开发者在开发 ...

  10. 已知从BUF开始存放了10个字类型有符号数据,编程求出这10个数中的最大数和最小数(将最大数存入MAX字单元、最小数存入MIN字单元),并将其以10进制数的形式在屏幕上显示出来。

    data segment            pmax db 0dh,0ah , 'MAX :   ','$'    pmin db 0dh,0ah , 'MIN :   ','$'    buf ...