Передающий ввод данных пользователем к оценке () является угрозой безопасности, но также и каждый вызов оценки () создает новый экземпляр интерпретатора JavaScript. Это может быть пожирателем ресурсов.
Вам нужно получить большой двоичный объект в качестве входного потока и выгрузить его содержимое в выходной поток. Таким образом, «страдание» должно выглядеть примерно так:
Blob blob = rs.getBlob(column);
InputStream in = blob.getBinaryStream();
OutputStream out = new FileOutputStream(someFile);
byte[] buff = new byte[4096]; // how much of the blob to read/write at a time
int len = 0;
while ((len = in.read(buff)) != -1) {
out.write(buff, 0, len);
}
Если вы обнаружите, что выполняете много операций ввода-вывода, подобных этой, вы можете изучить использование Apache Commons IO , чтобы позаботиться о деталях. Тогда все после настройки потоков будет просто:
IOUtils.copy(in, out);