Использование JDBI с драйвером JDBC, который не поддерживает подготовленные операторы

Я пытаюсь использовать последнюю версию 2.x JDBI поверх драйвера Presto/AWS Athena jdbc, который не поддерживает подготовленные операторы.

Кажется, что должен быть параметр конфигурации или такой, который позволил бы вам отключить использование подготовленных операторов, особенно если вы просто передаете SQL без параметров для привязки. Однако для интерфейса StatementBuilder требуется возвращаемое значение PreparedStatement из метода create.

Кто-нибудь сталкивался с этим или есть какой-нибудь совет о том, как использовать JDBI в этом случае? Я использую его в остальной части моего проекта для нескольких других баз данных, поэтому предпочел бы сохранить его для согласованности.

2 ответа

Решение

Если вы должны использовать JDBI с драйвером JDBC, который не поддерживает PreparedStatement, у вас есть два варианта:

  1. JDBI является открытым исходным кодом. Измените источник в соответствии с вашими потребностями. Если вы делаете это в целом полезным способом, вы можете отправить обновления обратно, чтобы другие могли извлечь из этого пользу, то есть стать участником.

  2. Притворяться. Создайте оболочку JDBC вокруг соединения JDBC из Presto/AWS Athena, которая возвращает подделку PreparedStatement, поддерживая только операторы SQL без параметров, т.е. UnsupportedOperationException если какой-либо из setXxx методы называются. Затем вы даете завернутую связь с JDBI.

Для Presto есть драйвер JDBC, который поддерживает подготовленные операторы, которые Teradata предлагает бесплатно. Вы можете скачать его с их сайта. Это должно работать с Афиной, но вы должны попробовать это.

Другие вопросы по тегам