Como coloco BLOBs grandes (ou pelo menos não triviais) no Oracle com JDBC?

Estou trabalhando em um aplicativo para fazer algum processamento em lote e quero armazenar os dados de entrada e saída como arquivos nos campos BLOB em um banco de dados Oracle. A versão do Oracle é 10g r2.

O uso do método PreparedStatement.setBinaryStream () como abaixo irá inserir um pequeno arquivo de texto no banco de dados, mas não estou tendo sorte com um arquivo de imagem maior.

Estou fazendo algo errado? Isso é possível com o JDBC? Vou precisar incomodar o DBA? Obrigado pela ajuda.

EDIT: O problema foi resolvido. Atualizei este código para um exemplo de trabalho:

import java.io.File;
import java.io.FileInputStream;
import java.io.OutputStream;
import java.sql.Blob;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;


public class WriteBlobDriver {
    public static void main(String[] args) {
        Connection con = null;
        try {
            Class.forName("oracle.jdbc.driver.OracleDriver");
            con = DriverManager.getConnection(
                    "blahblah",
                    "blahblah",
                    "blahblah");
            con.setAutoCommit(false);
            Statement statement = con.createStatement();
            //statement.executeUpdate("UPDATE BATCH_GC_JOBS SET INPUT_BATCH_FILE = EMPTY_BLOB() WHERE JOB_ID = 'a'");

            //Get blob and associated output stream
            ResultSet resultSet = statement.executeQuery("SELECT INPUT_BATCH_FILE FROM BATCH_GC_JOBS WHERE JOB_ID = 'a' FOR UPDATE");
            resultSet.next();
            Blob blob = resultSet.getBlob(1);
            OutputStream outputStream = ((oracle.sql.BLOB)blob).getBinaryOutputStream();

            // Buffer to hold chunks of data to being written to the Blob.
            byte[] buffer = new byte[10* 1024];
            int nread = 0;

            //Write file to output stream
            File file = new File("C:\\TEMP\\Javanese_cat.jpg");
            FileInputStream fileInputStream = new FileInputStream(file);
            while ((nread = fileInputStream.read(buffer)) != -1) {
                outputStream.write(buffer, 0, nread);
            }

            //Cleanup
            fileInputStream.close();
            outputStream.close();
            statement.close();
            con.commit();
            con.close();            
            System.out.println("done!");
        } catch (Exception e){
            e.printStackTrace();
        }
    }
}

questionAnswers(2)

yourAnswerToTheQuestion