Программное JDBC-подключение
Содержание раздела
JDBC-драйвер системы позволяет подключаться программно (без использования SQL-клиента). Вы можете реализовать свое приложение, работающее с системой по JDBC.
Реализация программного JDBC-подключения к системе
Чтобы реализовать программное подключение к системе по JDBC:
- Включите библиотеку JDBC-драйвера в свой проект.
- В реализации класса вашего приложения, отвечающего за подключение к системе (см. базовый пример в секции ниже):
- Импортируйте пакеты Java SQL:
import java.sql.*; -
(Опционально) Задайте максимальное количество запросов, исполняемых синхронно в одном подключении, с помощью параметра
statementConcurrency. По умолчанию значение равно 2.Например:
Properties properties = new Properties(); properties.setProperty("statementConcurrency", "1"); -
(Опционально) Задайте размер буфера данных, получаемых от системы Prostore, с помощью параметра
receiveBufferSize. По умолчанию значение равно 524288 байт (512 Кбайт).Например:
properties.setProperty("receiveBufferSize", "256 * 1024"); - (Опционально) Определите формат передачи данных между драйвером и системой:
- Задайте формат из следующих:
avro— Avro-формат без сжатия (используется по умолчанию);json— JSON-строка;avro-deflate— Avro-формат со сжатием по алгоритму Deflate;avro-snappy— Avro-формат со сжатием по алгоритму Snappy;avro-bzip2— Avro-формат со сжатием по алгоритму BZip2;avro-xz— Avro-формат со сжатием по алгоритму XZ;avro-zstandard— Avro-формат со сжатием по алгоритму Zstandard.
Например:
properties.setProperty("format", "avro-snappy");- Если вы используете Avro-формат со сжатием, задайте уровень сжатия данных, например:
properties.setProperty("compressionLevel", "3");Доступные уровни сжатия данных для каждого из алгоритмов см. в документации Apache Avro.
- Если вы используете Avro-формат
avro-snappyилиavro-xz, подключите нужные зависимости:
<dependency> <groupId>org.xerial.snappy</groupId> <artifactId>snappy-java</artifactId> </dependency> <dependency> <groupId>org.tukaani</groupId> <artifactId>xz</artifactId> </dependency> - Задайте формат из следующих:
- Установите соединение с системой с помощью метода
DriverManager.getConnection()в следующем формате:// Адрес подключения String url = "jdbc:prostore://ProstoreNodeHost:portNumber/logicalDatabaseName"; // Установка соединения в случае, если используется формат передачи данных по умолчанию (Avro без сжатия) Connection connection = DriverManager.getConnection(url); // Установка соединения в случае, если используется формат передачи данных, заданный в параметрах подключения Connection connection = DriverManager.getConnection(url, properties);Где:
prostoreNodeHost— IP-адрес или имя хоста с нодой Prostore;portNumber— номер порта для подключения;- (опционально)
logicalDatabaseName— имя логической базы данных, используемой по умолчанию.
- Выполните вызов нужных запросов SQL+ и по завершении обработки их результатов закройте подключение (см. примеры в разделе Как прочитать данные).
- Импортируйте пакеты Java SQL:
Пример класса для реализации подключения по JDBC
В примере ниже показана базовая реализация класса SimpleDtmJDBCExample, который задает формат передачи данных (avro-snappy), устанавливает соединение с системой по указанному адресу и закрывает соединение.
import java.sql.*;
import java.util.Properties;
public class SimpleProstoreJDBCExample {
public static void main(String[] args) {
String url = "jdbc:prostore://localhost:9090/marketing";
Properties properties = new Properties();
properties.setProperty("statementConcurrency", "1");
properties.setProperty("receiveBufferSize", "256 * 1024");
properties.setProperty("format", "avro-snappy");
properties.setProperty("compressionLevel", "3");
try (Connection connection = DriverManager.getConnection(url, properties)) {
System.out.println("Connected");
// Добавьте логику работы с подключением
} catch (SQLException error) {
// Добавьте логику обработки SQL-ошибок
error.printStackTrace();
}
}
}