Inserção em lote no Oracle

Bom dia pessoal, estou tentado fazer inserção em lote no banco de dados oracle, utilizando atualização em batch com o objeto statement, da seguinte forma:
Statement st = connection.createStatement()
st.addBatch(meu update sql)
uitlizo um contador para quando chegar a 200 ou 500(estou tendando das duas formas), ele dar um executeBatch, aí limpo o com o clearBatch.
Tenho uma quantidade razoavelmente grande de 31008 registros.
Essa atualização funciona de maneira diferente, eu fazia um loop numa coleção e atualizava os registros 1 a 1, só que ficava bastante lento. Estou tentando fazer a atualização em lote e ainda não consegui bons resultados, a atualização continua bastante lenta. Alguém sabe dizer se ainda está faltando eu setar algum parâmetro, ou fazer alguma configuração.

abs

cara não sei muito de java sinceramente inciante total, mas estou na mesma situação, achei um site gringo que tem uns exemplos legais, ainda não terminei o que preciso, porém esta ajudando a compreender melhor, apenas te respondo esta pois ja faz 7 anos e ninguem informou(certeza que já matou isso), caso alguem tenha alguns tutoriais, video aulas para ajudar agradeço. fiz um curso onde me deu uma base mas so praticando que estou aprendendo de verdade, espero um dia poder chegar em um nivel que não precise ficar lendo como venho lendo ultimamente, pior até meu sono esta tirando o desejo de aprender rsss

abraço a todos e espero em breve poder responder outros posts, segue linck abaixo

desculpe, quiz dizer que a vontade de aprender esta tanta que esta até tirando meu sono!!! lendo o dia e quase a noite inteira.

Por favor, não poste tópicos usando SOMENTE LETRAS MAIÚSCULAS.

será que alguem poderia me ajudar, esta sendo executado perfeitamente o script(lembrando que criei uma outra classe passando os metodos), porém não esta inserindo no banco pior não da nenhum erro.
Peço desculpas se não ficou claro. apenas necessito inserir o insert no banco, mas como é minha primeira aplicação acho que deixei passar algo.

package br.com.getnet.BDORA;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

public class JDBCOracleconect {

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

	String coluna1;
	Date coluna2;
	Date coluna20 = null;
	Date coluna19;
	Calendar cal1 = Calendar.getInstance();
	Calendar cal2 = Calendar.getInstance();

	List<Transacao> listaTransacao = new ArrayList<Transacao>();

	try {

		// Este é um dos meios para registrar um driver
		Class.forName("oracle.jdbc.driver.OracleDriver");

		// Registrado o driver, vamos estabelecer uma conexão
		Connection conexao = DriverManager.getConnection("jdbc:oracle:thin:@ip:porta:instancia","user", "senha");
		conexao.setAutoCommit(false);

		// Após estabelecermos a conexão com o banco de dados
		// Utilizamos o método createStatement de con para criar o Statement
		Statement stm = conexao.createStatement();

		String sql = ("INSERT INTO transacao (colunas até 20) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");

		PreparedStatement query = conexao.prepareStatement(sql);

		// Definido o Statement, executamos a query no banco de dados
		ResultSet rs = stm
				.executeQuery("select * from (select * from transacao where coluna19 between to_timestamp('01-08-2012 00:00:00.000', 'DD-MM-YYYY HH24:MI:SS.FF3')and to_timestamp('31-08-2012 23:59:59.999', 'DD-MM-YYYY HH24:MI:SS.FF3') ORDER BY dbms_random.value ) WHERE rownum = 1");
		// Utilizando Calendar para alterar data

		System.out.println(cal1);

		{
			//System.out.println(" Buscar uma transação da base de dados oracle aleatoriamente e cuja data de inserção esteja entre 01/08/2012 e 31/08/2012");
		}

		while (rs.next()) {
			Transacao tran = new Transacao();
			tran.setColuna01(rs.getString("coluna1"));
			tran.setColuna02(rs.getDate("coluna2"));
			tran.setColuna03(rs.getString("coluna3"));
			tran.setColuna04(rs.getString("coluna4"));
			tran.setColuna05(rs.getString("coluna5"));
			tran.setColuna06(rs.getFloat("coluna6"));
			tran.setColuna07(rs.getString("coluna7"));
			tran.setColuna08(rs.getString("coluna8"));
			tran.setColuna09(rs.getString("coluna9"));
			tran.setColuna10(rs.getFloat("colun10"));
			tran.setColuna11(rs.getString("coluna11"));
			tran.setColuna12(rs.getString("coluna12"));
			tran.setColuna13(rs.getString("coluna13"));
			tran.setColuna14(rs.getString("coluna14"));
			tran.setColuna15(rs.getString("coluna15"));
			tran.setColuna16(rs.getDate("coluna16"));
			tran.setColuna17(rs.getString("coluna17"));
			tran.setColuna18(rs.getString("coluna18"));
			tran.setColuna19(rs.getString("coluna19"));
			tran.setcoluna20(rs.getDate("coluna20"));

			coluna2= rs.getDate("coluna2");
			coluna1 = rs.getString("coluna1");

			// incrementar a data em 60 dias e alterar a hora para a hora
			// atual
			cal1.setTime(coluna2);
			System.out.println(coluna2);
			cal1.add(Calendar.DATE, 60);
			cal1.set(Calendar.HOUR, cal2.get(Calendar.HOUR));
			cal1.set(Calendar.MINUTE, cal2.get(Calendar.MINUTE));
			cal1.set(Calendar.SECOND, cal2.get(Calendar.SECOND));
			cal1.set(Calendar.MILLISECOND, cal2.get(Calendar.MILLISECOND));

			{
				//System.out.println("Alterar os seguintes campos dessa  data/hora  ? incrementar a data em 60 dias e a alterar a hora para a hora atual");
			}

			System.out.println(cal1.getTime());
			coluna2= cal1.getTime();

			// Alterar campos de uma coluna, está sendo usado para
			// evidenciar que esta sendo feita alteração da data
			System.out.println("hora da coluna1 sem alteração");
			String coluna1 = coluna1;
			String codigo_numeros2 = coluna1.substring(31, 39);
			System.out.println(codigo_numeros2);
			System.out.println("hora do coluna1 com alteração");
			//System.out.println("O QUE ME FOI PEDIDO alterar a hora que está dentro da coluna1 para a mesma que foi colocada no campo data/hora da coluna2");

			SimpleDateFormat formato = new SimpleDateFormat("HHmmssSS2");

			// alterar os 8 ultimos digitos do coluna1
			String teste = coluna1;
			teste = codigo_numeros2;
			teste = teste.replace(coluna1.substring(31, 39),
			formato.format(coluna2));
			System.out.print(teste);

			listaTransacao.add(tran);
		}
		

		for (Movimento movimento : listamovimento) {

			query.setString(1, movimento.getColuna1());
			query.setDate(2, (java.sql.Date) movimento.coluna02/*data*/());
			query.setString(3, movimento.getColuna03());
			query.setString(4, movimento.getColuna04());
			query.setString(5, movimento.getColuna05());
			query.setFloat(6, movimento.getColuna06());
			query.setString(7, movimento.getColuna07());
			query.setString(8, movimento.getColuna08());
			query.setString(9, movimento.getColuna09());
			query.setFloat(10, movimento.getColuna10());
			query.setString(11, movimento.getColuna11());
			query.setString(12, movimento.getColuna12());
			query.setString(13, movimento.getColuna13());
			query.setString(14, movimento.getColuna14());
			query.setString(15, movimento.getColuna15());
			query.setDate(16, (java.sql.Date) movimento.getColuna16/*data*/());
			query.setString(17, movimento.getColuna17());
			query.setString(18, movimento.getColuna18());
			query.setDate(19, (java.sql.Date) movimento.getColuna19 /*data*/());
			query.setDate(20, (java.sql.Date) movimento.getColuna20/*data*/());

			query.addBatch();
			{

			}
		}
		conexao.commit();
		query.clearBatch();
		query.close();

		//System.out.println("Incluir essa nova transação na base de dados oracle");

		// mostra os erros
	} catch (ClassNotFoundException e) {
		e.printStackTrace();
	} catch (SQLException e)// erro que pode ocorrer na comunicação com o BD

	{

		e.printStackTrace(); // forma de ver qual erro foi gerado
	}

}

}
Peço desculpas se não fui muito claro minha segunda postagem no forum fico no aguardo de um retorno, pois tenho de entregar isso funcionando amanhã 24/01.

JAVA NÃO É DIFICIL O DIFICIL E APRENDER TUDO QUE É NECESSÁRIO PARA NÃO TER DE INCOMODAR OS OUTROS!!
ESTOU ESTUDANDO PARA ISSO!!

Outra coisa notei que me esqueci de alterar alguns nomes, mas… garanto está funcionando, apenas não insere ou acho que não inser, pois dou select do periodo e me retorna as colunas em branco

alduck, leia: http://www.guj.com.br/java/287484-gujnautas-how-to

agradeço pela dica peço desculpas, pois sou iniciante apesar de achar que este script seja um pouco complexo mas… me passaram, vou ver se consigo resolver, pois como disse tenho o prazo de amanhã, até ler e seguir tudo certinho ja terá dado meu horário de ir para casa.

agradeço de qualquer forma pela ajuda ou orientação e se for postar novamente, seguirei a recomendação.

sem mais tancks