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工程师联通XX面试题目

    什么是“长连接”和“短连接”? 所谓短连接指建立SOCKET连接后发送后接收完数据后马上断开连接,一般银行都使用短连接解释2长连接就是指在基于tcp的通讯中,一直保持连接,不管当前是否发送或者接收数据 ...

  2. List的输出方法

    1.for (int i = 0; i < list.size(); i++) {    System.out.println(list.get(i));} 2.List list = new  ...

  3. 《SpringMVC数据绑定入门》笔记

    基本类型 最好使用封装类型 简单多数据&多层级对象 简单多数据 单个对象,直接使用属性名=值即可 多层级对象 属性.属性=值即可 同属性多对象 WebDataBinder只在当前类中生效,不是 ...

  4. 【转】PHP生成随机密码的几种方法

    使用PHP开发应用程序,尤其是网站程序,常常需要生成随机密码,如用户注册生成随机密码,用户重置密码也需要生成一个随机的密码.随机密码也就是一串固定长度的字符串,这里我收集整理了几种生成随机字符串的方法 ...

  5. 如何让搜索引擎抓取AJAX内容? 转

    越来越多的网站,开始采用"单页面结构"(Single-page application). 整个网站只有一张网页,采用 Ajax 技术,根据用户的输入,加载不同的内容. 这种做法的 ...

  6. IOS开发-UI学习-UIWebView,简单浏览器的制作

    制作一个简单的浏览器,包含网址输入框,Search按钮,前进.回退按钮,UIWebView就这几个简单的控件. UITextField:用来输入网址: UIbuttom:实现前进,后退,搜索等功能: ...

  7. 非root用户Memcached repcached安装

    安装memcached前先要确定系统是否安装了gcc: 1.解压安装包: tar -zxf memcached-1.2.8-repcached-2.2.tar.gz 2.编译: 系统应安装了libev ...

  8. JDBC executeBatch 抛出异常停止

    进行批量更新的时候发现: addBatch(sql); executeBatch 抛出异常后,剩余的sql没有更新,即出现异常之前的都入库了,异常之后即使有可执行sql都不会执行. 百度资料后了解:这 ...

  9. css--position和float

    1.元素设置position:relative或者position:absolute后,才能激活left,top,right,bottom和z-index属性,默认情况下这些属性并未激活,设置了也会无 ...

  10. 330. Patching Array

    Given a sorted positive integer array nums and an integer n, add/patch elements to the array such th ...