Перейти к основному содержимому
Перейти к основному содержимому

Java Client (0.8+)

Библиотека Java-клиента для взаимодействия с сервером БД через его протоколы. Текущая реализация поддерживает только HTTP интерфейс. Библиотека предоставляет собственный API для отправки запросов на сервер. Также библиотека предоставляет инструменты для работы с различными бинарными форматами данных (RowBinary* & Native*).

примечание

Если вам нужна предыдущая версия документации java клиента, пожалуйста, смотрите здесь.

Настройка

Инициализация

Объект Client инициализируется с помощью com.clickhouse.client.api.Client.Builder#build(). Каждый клиент имеет свой собственный контекст и объекты не разделяются между ними. Строитель имеет методы конфигурации для удобной настройки.

Пример:

Client является AutoCloseable и должен быть закрыт, когда не нужен больше.

Аутентификация

Аутентификация настраивается для каждого клиента на этапе инициализации. Поддерживаются три метода аутентификации: по паролю, по токену доступа, с использованием клиентского сертификата SSL.

Аутентификация по паролю требует установки имени пользователя и пароля с помощью вызовов setUsername(String) и setPassword(String):

Аутентификация по токену доступа требует установки токена доступа с помощью вызова setAccessToken(String):

Аутентификация с использованием клиентского сертификата SSL требует установки имени пользователя, включения SSL-аутентификации, установки клиентского сертификата и ключа клиента с помощью вызовов setUsername(String), useSSLAuthentication(boolean), setClientCertificate(String) и setClientKey(String) соответственно:

примечание

Аутентификация SSL может быть трудной для устранения проблем в производственной среде, так как многие ошибки из библиотек SSL предоставляют недостаточно информации. Например, если клиентский сертификат и ключ не совпадают, сервер немедленно завершит соединение (в случае HTTP это будет на стадии инициации соединения, когда ни один HTTP-запрос не отправляется, и, соответственно, ответ не отправляется).

Пожалуйста, используйте инструменты, такие как openssl, для проверки сертификатов и ключей:

  • проверьте целостность ключа: openssl rsa -in [key-file.key] -check -noout
  • проверьте, что клиентский сертификат имеет совпадающее CN для пользователя:
    • получите CN из сертификата пользователя - openssl x509 -noout -subject -in [user.cert]
    • проверьте, что то же значение установлено в базе данных select name, auth_type, auth_params from system.users where auth_type = 'ssl_certificate' (запрос выведет auth_params с чем-то вроде {"common_names":["some_user"]})

Конфигурация

Все настройки определяются экземплярными методами (также известными как методы конфигурации), что делает область видимости и контекст каждого значения ясными. Основные параметры конфигурации определяются в одной области (клиент или операция) и не переопределяют друг друга.

Конфигурация определяется во время создания клиента. См. com.clickhouse.client.api.Client.Builder.

Конфигурация клиента

Метод конфигурацииАргументыОписание
addEndpoint(String endpoint)- enpoint - URL отформатированного адреса сервера.Добавляет конечную точку сервера в список доступных серверов. В настоящее время поддерживается только одна конечная точка.
addEndpoint(Protocol protocol, String host, int port, boolean secure)- protocol - протокол соединения com.clickhouse.client.api.enums.Protocol#HTTP.
- host - IP или имя хоста сервера.
- secure - если связь должна использовать защищенную версию протокола (HTTPS)
Добавляет конечную точку сервера в список доступных серверов. В настоящее время поддерживается только одна конечная точка.
setOption(String key, String value)- key - строковой ключ опции конфигурации клиента.
- value - строковое значение опции
Устанавливает сырой значение параметров клиента. Полезно при чтении конфигурации из файлов свойств.
setUsername(String username)- username - имя пользователя для аутентификацииУстанавливает имя пользователя для метода аутентификации, выбранного дальнейшей конфигурацией
setPassword(String password)- password - секретное значение для аутентификации паролемУстанавливает секрет для аутентификации паролем и фактически выбирает метод аутентификации
setAccessToken(String accessToken)- accessToken - строковое представление токена доступаУстанавливает токен доступа для аутентификации с установленным соответствующим методом аутентификации
useSSLAuthentication(boolean useSSLAuthentication)- useSSLAuthentication - флаг, указывающий, следует ли использовать аутентификацию SSLУстанавливает клиентский сертификат SSL в качестве метода аутентификации
enableConnectionPool(boolean enable)- enable - флаг, указывающий, следует ли включать эту опциюУстанавливает, включен ли пул подключений
setConnectTimeout(long timeout, ChronoUnit unit)- timeout - тайм-аут в некоторых единицах времени.
- unit - единица времени тайм-аута
Устанавливает тайм-аут инициации соединения для любого исходящего соединения. Это влияет на время ожидания получения соединения сокета.
setConnectionRequestTimeout(long timeout, ChronoUnit unit)- timeout - тайм-аут в некоторых единицах времени.
- unit - единица времени тайм-аута
Устанавливает тайм-аут запроса соединения. Это вступает в силу только для получения соединения из пула.
setMaxConnections(int maxConnections)- maxConnections - количество соединенийУстанавливает, сколько соединений может открыть клиент для каждой конечной точки сервера.
setConnectionTTL(long timeout, ChronoUnit unit)- timeout - тайм-аут в некоторых единицах времени.
- unit - единица времени тайм-аута
Устанавливает время жизни соединения (TTL), после которого соединение будет считаться неактивным
setKeepAliveTimeout(long timeout, ChronoUnit unit)- timeout - тайм-аут в некоторых единицах времени.
- unit - единица времени тайм-аута
Устанавливает тайм-аут поддержания активного состояния HTTP соединения. Эта опция может быть использована для отключения Keep-Alive, установив тайм-аут в ноль - 0
setConnectionReuseStrategy(ConnectionReuseStrategy strategy)- strategy - константа com.clickhouse.client.api.ConnectionReuseStrategyВыбирает, какую стратегию должен использовать пул соединений: LIFO, если соединение должно использоваться снова сразу после его возврата в пул, или FIFO, чтобы использовать соединение в порядке их появления (возвращенные соединения не используются немедленно).
setSocketTimeout(long timeout, ChronoUnit unit)- timeout - тайм-аут в некоторых единицах времени.
- unit - единица времени тайм-аута
Устанавливает тайм-аут сокета, который влияет на операции чтения и записи
setSocketRcvbuf(long size)- size - размер в байтахУстанавливает буфер получения TCP-сокета. Этот буфер находится вне памяти JVM.
setSocketSndbuf(long size)- size - размер в байтахУстанавливает буфер отправки TCP-сокета. Этот буфер находится вне памяти JVM.
setSocketKeepAlive(boolean value)- value - флаг, указывающий, следует ли включать эту опцию.Устанавливает опцию SO_KEEPALIVE для каждого TCP-сокета, созданного клиентом. TCP Keep Alive включает механизм, который будет проверять работоспособность соединения и поможет обнаружить неожиданно завершенные соединения.
setSocketTcpNodelay(boolean value)- value - флаг, указывающий, следует ли включать эту опцию.Устанавливает опцию SO_NODELAY для каждого TCP-сокета, созданного клиентом. Эта опция TCP заставит сокет отправлять данные как можно скорее.
setSocketLinger(int secondsToWait)- secondsToWait - количество секунд.Устанавливает время ожидания для каждого TCP-сокета, созданного клиентом.
compressServerResponse(boolean enabled)- enabled - флаг, указывающий, следует ли включать эту опциюУстанавливает, должен ли сервер сжимать свои ответы.
compressClientRequest(boolean enabled)- enabled - флаг, указывающий, следует ли включать эту опциюУстанавливает, должен ли клиент сжимать свои запросы.
useHttpCompression(boolean enabled)- enabled - флаг, указывающий, следует ли включать эту опциюУстанавливает, следует ли использовать HTTP-сжатие для взаимодействия клиент/сервер, если соответствующие опции включены
setLZ4UncompressedBufferSize(int size)- size - размер в байтахУстанавливает размер буфера, который будет получать несжатую часть потока данных. Если размер буфера недооценен, то будет создан новый, и соответствующее предупреждение будет записано в журнале.
setDefaultDatabase(String database)- database - имя базы данныхУстанавливает базу данных по умолчанию.
addProxy(ProxyType type, String host, int port)- type - тип прокси.
- host - имя хоста прокси или IP-адрес.
- port - порт прокси
Устанавливает прокси для использования при взаимодействии с сервером. Установка прокси требуется, если прокси требует аутентификации.
setProxyCredentials(String user, String pass)- user - имя пользователя прокси.
- pass - пароль
Устанавливает учетные данные пользователя для аутентификации с прокси.
setExecutionTimeout(long timeout, ChronoUnit timeUnit)- timeout - тайм-аут в некоторых единицах времени.
- timeUnit - единица времени тайм-аута
Устанавливает максимальный тайм-аут выполнения для запросов
setHttpCookiesEnabled(boolean enabled)enabled - флаг, указывающий, следует ли включать эту опциюУстанавливает, должны ли HTTP куки храниться и отправляться обратно на сервер.
setSSLTrustStore(String path)path - путь к файлу на локальной (клиентской) стороне системыУстанавливает, должен ли клиент использовать SSL truststore для валидации хоста сервера.
setSSLTrustStorePassword(String password)password - секретное значениеУстанавливает пароль, используемый для разблокировки SSL truststore, указанный в setSSLTrustStore(String path)
setSSLTrustStoreType(String type)type - имя типа truststoreУстанавливает тип truststore, указанный в setSSLTrustStore(String path).
setRootCertificate(String path)path - путь к файлу на локальной (клиентской) стороне системыУстанавливает, должен ли клиент использовать указанный корневой (CA) сертификат для валидации хоста сервера.
setClientCertificate(String path)path - путь к файлу на локальной (клиентской) стороне системыУстанавливает путь к клиентскому сертификату, который будет использоваться при инициации SSL-соединения и для аутентификации SSL
setClientKey(String path)path - путь к файлу на локальной (клиентской) стороне системыУстанавливает личный ключ клиента, который будет использоваться для шифрования SSL-соединения с сервером.
useServerTimeZone(boolean useServerTimeZone)useServerTimeZone - флаг, указывающий, следует ли включать эту опциюУстанавливает, должен ли клиент использовать серверный часовой пояс при декодировании значений столбцов DateTime и Date. Если включено, серверный часовой пояс должен быть установлен с помощью setServerTimeZone(String timeZone)
useTimeZone(String timeZone)timeZone - строковое значение действительного ID часового пояса java (см. java.time.ZoneId)Устанавливает, должен ли использоваться указанный часовой пояс при декодировании значений столбцов DateTime и Date. Переопределит часовой пояс сервера
setServerTimeZone(String timeZone)timeZone - строковое значение действительного ID часового пояса java (см. java.time.ZoneId)Устанавливает часовой пояс сервера. В качестве значения по умолчанию будет использоваться UTC.
useAsyncRequests(boolean async)async - флаг, указывающий, следует ли включать эту опцию.Устанавливает, должен ли клиент выполнять запрос в отдельном потоке. Отключено по умолчанию, так как приложение лучше знает, как организовать многопоточные задачи, и выполнение задач в отдельном потоке не помогает с производительностью.
setSharedOperationExecutor(ExecutorService executorService)executorService - экземпляр сервиса исполнителя.Устанавливает сервис исполнителя для операций.
setClientNetworkBufferSize(int size)- size - размер в байтахУстанавливает размер буфера в памяти приложения, который используется для копирования данных между сокетом и приложением. Больший размер уменьшает количество системных вызовов к стеку TCP, но влияет на то, сколько памяти расходуется на каждое соединение. Этот буфер также подлежит сборке мусора, так как соединения краткоживущие. Также имейте в виду, что выделение большого непрерывного блока памяти может быть проблемой. По умолчанию это 300,000 байт.
retryOnFailures(ClientFaultCause ...causes)- causes - константа перечисления com.clickhouse.client.api.ClientFaultCauseУстанавливает типы неисправностей, подлежащие восстановлению/повторному вызову.
setMaxRetries(int maxRetries)- maxRetries - количество попытокУстанавливает максимальное количество повторных попыток для ошибок, определенных retryOnFailures(ClientFaultCause ...causes)
allowBinaryReaderToReuseBuffers(boolean reuse)- reuse - флаг, указывающий, следует ли включать эту опциюБольшинство наборов данных содержат числовые данные, закодированные в виде небольших последовательностей байтов. По умолчанию считыватель выделит необходимый буфер, прочитает данные в него, а затем преобразует в целевой класс Number. Это может вызвать значительное давление на сборку мусора из-за большого количества небольших объектов, которые выделяются и освобождаются. Если эта опция включена, считыватель будет использовать заранее выделенные буферы для трансформации чисел. Это безопасно, поскольку каждый считыватель имеет свой собственный набор буферов, и считыватели используются одним потоком.
httpHeader(String key, String value)- key - ключ HTTP заголовка.
- value - строковое значение заголовка.
Устанавливает значение для одного HTTP заголовка. Предыдущее значение будет переопределено.
httpHeader(String key, Collection values)- key - ключ HTTP заголовка.
- values - список строковых значений.
Устанавливает значения для одного HTTP заголовка. Предыдущее значение будет переопределено.
httpHeaders(Map headers)- header - карта с HTTP заголовками и их значениями.Устанавливает несколько значений HTTP заголовков за один раз.
serverSetting(String name, String value)- name - имя параметра уровня запроса.
- value - строковое значение параметра.
Устанавливает настройки, которые следует передать серверу вместе с каждым запросом. Отдельные операции могут переопределить их. Список настроек
serverSetting(String name, Collection values)- name - имя параметра уровня запроса.
- values - строковые значения параметра.
Устанавливает настройки, которые следует передать серверу вместе с каждым запросом. Отдельные операции могут переопределить их. Список настроек. Этот метод полезен для установки настроек с несколькими значениями, например roles
columnToMethodMatchingStrategy(ColumnToMethodMatchingStrategy strategy)- strategy - реализация стратегии соответствия столбцов и методовУстанавливает пользовательскую стратегию, которая будет использоваться для соответствия полей DTO классов и столбцов БД при регистрации DTO.
useHTTPBasicAuth(boolean useBasicAuth)- useBasicAuth - флаг, указывающий, следует ли включать эту опциюУстанавливает, следует ли использовать базовую HTTP аутентификацию для аутентификации по имени пользователя и паролю. По умолчанию включено. Использование этого типа аутентификации решает проблемы с паролями, содержащими специальные символы, которые не могут быть перенесены через HTTP заголовки.
setClientName(String clientName)- clientName - строка, представляющая имя приложенияУстанавливает дополнительную информацию о вызываемом приложении. Эта строка будет передана серверу в качестве имени клиента. В случае протокола HTTP это будет передано как заголовок User-Agent.
useBearerTokenAuth(String bearerToken)- bearerToken - закодированный токен доступаУказывает, следует ли использовать аутентификацию Bearer и какой токен использовать. Токен будет отправлен как есть, поэтому он должен быть закодирован перед передачей в этот метод.

Общие Определения

ClickHouseFormat

Перечисление поддерживаемых форматов. Включает все форматы, которые поддерживает ClickHouse.

  • raw - пользователь должен перекодировать сырьевые данные
  • full - клиент может перекодировать данные сам и принимает необработанный поток данных
  • - - операция, не поддерживаемая ClickHouse для этого формата

Эта версия клиента поддерживает:

ФорматВходВыход
TabSeparatedrawraw
TabSeparatedRawrawraw
TabSeparatedWithNamesrawraw
TabSeparatedWithNamesAndTypesrawraw
TabSeparatedRawWithNamesrawraw
TabSeparatedRawWithNamesAndTypesrawraw
Templaterawraw
TemplateIgnoreSpacesraw-
CSVrawraw
CSVWithNamesrawraw
CSVWithNamesAndTypesrawraw
CustomSeparatedrawraw
CustomSeparatedWithNamesrawraw
CustomSeparatedWithNamesAndTypesrawraw
SQLInsert-raw
Valuesrawraw
Vertical-raw
JSONrawraw
JSONAsStringraw-
JSONAsObjectraw-
JSONStringsrawraw
JSONColumnsrawraw
JSONColumnsWithMetadatarawraw
JSONCompactrawraw
JSONCompactStrings-raw
JSONCompactColumnsrawraw
JSONEachRowrawraw
PrettyJSONEachRow-raw
JSONEachRowWithProgress-raw
JSONStringsEachRowrawraw
JSONStringsEachRowWithProgress-raw
JSONCompactEachRowrawraw
JSONCompactEachRowWithNamesrawraw
JSONCompactEachRowWithNamesAndTypesrawraw
JSONCompactStringsEachRowrawraw
JSONCompactStringsEachRowWithNamesrawraw
JSONCompactStringsEachRowWithNamesAndTypesrawraw
JSONObjectEachRowrawraw
BSONEachRowrawraw
TSKVrawraw
Pretty-raw
PrettyNoEscapes-raw
PrettyMonoBlock-raw
PrettyNoEscapesMonoBlock-raw
PrettyCompact-raw
PrettyCompactNoEscapes-raw
PrettyCompactMonoBlock-raw
PrettyCompactNoEscapesMonoBlock-raw
PrettySpace-raw
PrettySpaceNoEscapes-raw
PrettySpaceMonoBlock-raw
PrettySpaceNoEscapesMonoBlock-raw
Prometheus-raw
Protobufrawraw
ProtobufSinglerawraw
ProtobufListrawraw
Avrorawraw
AvroConfluentraw-
Parquetrawraw
ParquetMetadataraw-
Arrowrawraw
ArrowStreamrawraw
ORCrawraw
Oneraw-
Npyrawraw
RowBinaryfullfull
RowBinaryWithNamesfullfull
RowBinaryWithNamesAndTypesfullfull
RowBinaryWithDefaultsfull-
Nativefullraw
Null-raw
XML-raw
CapnProtorawraw
LineAsStringrawraw
Regexpraw-
RawBLOBrawraw
MsgPackrawraw
MySQLDumpraw-
DWARFraw-
Markdown-raw
Formraw-

API вставки

insert(String tableName, InputStream data, ClickHouseFormat format)

Принимает данные в виде InputStream байтов в указанном формате. Ожидается, что data закодированы в format.

Подписи

Параметры

tableName - имя целевой таблицы.

data - входной поток закодированных данных.

format - формат, в котором данные закодированы.

settings - настройки запроса.

Возвращаемое значение

Future типа InsertResponse - результат операции и дополнительная информация, такая как метрики на стороне сервера.

Примеры

insert(String tableName, List<?> data, InsertSettings settings)

Отправляет запрос на запись в базу данных. Список объектов преобразуется в эффективный формат и затем отправляется на сервер. Класс элементов списка должен быть зарегистрирован заранее с помощью метода register(Class, TableSchema).

Подписи

Параметры

tableName - имя целевой таблицы.

data - коллекция объектов DTO (Data Transfer Object).

settings - настройки запроса.

Возвращаемое значение

Future типа InsertResponse - результат операции и дополнительная информация, такая как метрики на стороне сервера.

Примеры

InsertSettings

Настройки конфигурации для операций вставки.

Методы конфигурации

МетодОписание
setQueryId(String queryId)Устанавливает идентификатор запроса, который будет присвоен операции. По умолчанию: null.
setDeduplicationToken(String token)Устанавливает токен дедупликации. Этот токен будет отправлен на сервер и может использоваться для идентификации запроса. По умолчанию: null.
setInputStreamCopyBufferSize(int size)Размер буфера копирования. Буфер используется во время операций записи для копирования данных из предоставленного пользователем входного потока в выходной поток. По умолчанию: 8196.
serverSetting(String name, String value)Устанавливает индивидуальные серверные настройки для операции.
serverSetting(String name, Collection values)Устанавливает индивидуальные серверные настройки с несколькими значениями для операции. Элементы коллекции должны быть значениями типа String.
setDBRoles(Collection dbRoles)Устанавливает роли базы данных, которые будут установлены перед выполнением операции. Элементы коллекции должны быть значениями типа String.
setOption(String option, Object value)Устанавливает параметр конфигурации в необработанном формате. Это не серверная настройка.

InsertResponse

Объект ответа, который содержит результат операции вставки. Он доступен только в том случае, если клиент получил ответ от сервера.

примечание

Этот объект должен быть закрыт как можно скорее, чтобы освободить соединение, так как соединение не может быть повторно использовано, пока все данные предыдущего ответа не будут полностью прочитаны.

МетодОписание
OperationMetrics getMetrics()Возвращает объект с метриками операции.
String getQueryId()Возвращает идентификатор запроса, присвоенный операции приложением (через настройки операции или сервером).

Query API

query(String sqlQuery)

Отправляет sqlQuery как есть. Формат ответа устанавливается настройками запроса. QueryResponse будет содержать ссылку на поток ответа, который должен быть использован читателем для поддерживаемого формата.

Подписи

Параметры

sqlQuery - одно SQL выражение. Запрос отправляется на сервер как есть.

settings - настройки запроса.

Возвращаемое значение

Future типа QueryResponse - набор результатов и дополнительная информация, такая как метрики на стороне сервера. Объект ответа должен быть закрыт после потребления набора данных.

Примеры

query(String sqlQuery, Map<String, Object> queryParams, QuerySettings settings)

Отправляет sqlQuery как есть. Кроме того, будут отправлены параметры запроса, чтобы сервер мог скомпилировать SQL выражение.

Подписи

Параметры

sqlQuery - SQL выражение с заполнителями {}.

queryParams - карта переменных для завершения SQL выражения на сервере.

settings - настройки запроса.

Возвращаемое значение

Future типа QueryResponse - набор результатов и дополнительная информация, такая как метрики на стороне сервера. Объект ответа должен быть закрыт после потребления набора данных.

Примеры

queryAll(String sqlQuery)

Запрашивает данные в формате RowBinaryWithNamesAndTypes. Возвращает результат в виде коллекции. Производительность чтения такая же, как при использовании читателя, но требуется больше памяти для хранения всего набора данных.

Подписи

Параметры

sqlQuery - SQL выражение для запроса данных с сервера.

Возвращаемое значение

Полный набор данных, представленный списком объектов GenericRecord, которые обеспечивают доступ в строковом формате для результатирующих данных.

Примеры

QuerySettings

Настройки конфигурации для операций запросов.

Методы конфигурации

МетодОписание
setQueryId(String queryId)Устанавливает идентификатор запроса, который будет присвоен операции.
setFormat(ClickHouseFormat format)Устанавливает формат ответа. См. RowBinaryWithNamesAndTypes для полного списка.
setMaxExecutionTime(Integer maxExecutionTime)Устанавливает время выполнения операции на сервере. Не повлияет на время ожидания чтения.
waitEndOfQuery(Boolean waitEndOfQuery)Запрашивает сервер, чтобы он ждал завершения запроса перед отправкой ответа.
setUseServerTimeZone(Boolean useServerTimeZone)Часовой пояс сервера (см. конфигурацию клиента) будет использоваться для разбора типов даты/времени в результате операции. По умолчанию false.
setUseTimeZone(String timeZone)Запрашивает у сервера использовать timeZone для преобразования времени. См. session_timezone.
serverSetting(String name, String value)Устанавливает индивидуальные серверные настройки для операции.
serverSetting(String name, Collection values)Устанавливает индивидуальные серверные настройки с несколькими значениями для операции. Элементы коллекции должны быть значениями типа String.
setDBRoles(Collection dbRoles)Устанавливает роли базы данных, которые будут установлены перед выполнением операции. Элементы коллекции должны быть значениями типа String.
setOption(String option, Object value)Устанавливает параметр конфигурации в необработанном формате. Это не серверная настройка.

QueryResponse

Объект ответа, который содержит результат выполнения запроса. Он доступен только в том случае, если клиент получил ответ от сервера.

примечание

Этот объект должен быть закрыт как можно скорее, чтобы освободить соединение, так как соединение не может быть повторно использовано, пока все данные предыдущего ответа не будут полностью прочитаны.

МетодОписание
ClickHouseFormat getFormat()Возвращает формат, в котором данные в ответе закодированы.
InputStream getInputStream()Возвращает непакетированный поток байтов данных в указанном формате.
OperationMetrics getMetrics()Возвращает объект с метриками операции.
String getQueryId()Возвращает идентификатор запроса, присвоенный для операции приложением (через настройки операции или сервером).
TimeZone getTimeZone()Возвращает часовой пояс, который должен использоваться для обработки типов Date/DateTime в ответе.

Examples

Common API

getTableSchema(String table)

Получает схему таблицы для table.

Подписи

Параметры

table - имя таблицы, для которой должны быть получены данные схемы.

database - база данных, где определена целевая таблица.

Возвращаемое значение

Возвращает объект TableSchema со списком колонок таблицы.

getTableSchemaFromQuery(String sql)

Получает схему из SQL-запроса.

Подписи

Параметры

sql - SQL-запрос "SELECT", для которого должна быть возвращена схема.

Возвращаемое значение

Возвращает объект TableSchema с колонками, соответствующими SQL выражению.

TableSchema

register(Class<?> clazz, TableSchema schema)

Компилирует уровень сериализации и десериализации для Java класса, который будет использоваться для записи/чтения данных с schema. Метод создаст сериализатор и десериализатор для пары геттер/сеттер и соответствующей колонны. Совпадение колонки определяется путем извлечения ее имени из имени метода. Например, getFirstName будет соответствовать колонке first_name или firstname.

Подписи

Параметры

clazz - класс, представляющий POJO, используемый для чтения/записи данных.

schema - схема данных, которая будет использоваться для сопоставления с свойствами POJO.

Примеры

Usage Examples

Полные примеры кода хранятся в репозитории в папке 'example` folder:

  • client-v2 - основной набор примеров.
  • demo-service - пример того, как использовать клиент в приложении Spring Boot.
  • demo-kotlin-service - пример того, как использовать клиент в приложении Ktor (Kotlin).