import java.io.File;
import java.io.InputStream;
import java.io.ByteArrayStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.Blob;

public class Client {
    public static void main(String[] args) throws Exception {
        Class.forName("oracle.jdbc.driver.OracleDriver");
        Connection con = DriverManager.getConnection(
            "jdbc:oracle:thin:@localhost:1521:sample", "hoge", "hoge"
        );

        //LargeObject INSERT
        File f = new File("/home/hoge/hoge.txt");
        PreparedStatement ps = con.prepareStatement("INSERT INTO sample(obj) values(?)");
        ps.setBinaryStream(1, new FileInputStream(f), (int)f.length());
        ps.executeUpdate();
        ps.close();

        //LargeObject SELECT
        PreparedStatement ps2 = con.prepareStatement("SELECT obj FROM sample WHERE id = 1");
        ResultSet rs = ps2.executeQuery();
        Blob blob = rs.getBlob("obj");
        InputStream is = blob.getBinaryStream();
        ByteArrayStream bas = new ByteArrayStream();

        int bytes;
        byte[] b = new byte[4096];

        while((bytes = in.read(b)) != -1) {
            bas.write(b, 0, bytes);
        }
        System.out.println(bas.toString());

        rs.close();
        ps2.close();
        con.close();
    }
}