Я нахожусь в процессе рассмотрения некоторого старого кода Java / JDBC для обработки CLOB в базе данных oracle. Существующий код использует подход, аналогичный подходу, упомянутому в этом вопросе .
Я нашел статью , в которой говорится:
До Oracle JDBC 10g для манипулирования данными CLOB в JDBC использовался класс расширения Oracle oracle.sql.CLOB. Но теперь Oracle JDBC 10g имеет несколько улучшений, которые упрощают манипулирование CLOB в приложениях JDBC. Это позволяет обрабатывать большие данные с использованием некоторых доступных стандартных API вместо использования классов расширения Oracle.
В статье приводится следующая информация о деталях этого улучшения:
По умолчанию метод prepareStatement.setString () позволяет обрабатывать строки размером до 32765 байт. Чтобы вставить данные размером более 32765 байт, можно установить новое свойство Connection - SetBigStringTryClob. Это вынуждает prepareStatement.setString () использовать другой недавно представленный метод OraclePreparedStatement.setStringForClob ().
Однако он предупреждает:
... обработка очень больших объемов данных таким способом, возможно, не является мудрой; потоковая передача данных является лучшей альтернативой.
Но выше - единственное предупреждение, связанное с производительностью в этой статье.
Мой вопрос заключается в том, что, если весь доступ к CLOB в моем коде уже выполняется через объекты String, следует ли мне беспокоиться о любых других потенциальных проблемах производительности, которые могут быть вызваны этим изменением подхода? Другими словами, мое приложение не использует преимущества, предлагаемые потоковой передачей, поскольку оно уже всегда загружает объекты CLOB в объектах String, поэтому приведенное выше предупреждение может быть проигнорировано, поскольку в данный момент мы не стремимся к повышению производительности. Есть ли другие проблемы, связанные с производительностью, которые могут возникнуть из-за перехода на эту технику?