Драйвер PostgreSQL JDBC (сокращенно PgJDBC) позволяет программам Java подключаться к базе данных PostgreSQL с использованием стандартного, независимого от базы данных кода Java. Это драйвер JDBC с открытым исходным кодом, написанный на Pure Java (тип 4) и взаимодействующий по собственному сетевому протоколу PostgreSQL.
Текущая версия драйвера должна быть совместима с PostgreSQL 8.4 и выше при использовании протокола версии 3.0 и Java 8 (JDBC 4.2) или выше. Если у вас нет необычных требований (запуск старых приложений или JVM), вам следует использовать именно этот драйвер.
Регрессионные тесты PgJDBC выполняются для всех версий PostgreSQL, начиная с 9.1, включая версию «сборка PostgreSQL из git master». Существуют и другие производные версии PostgreSQL, но они не сертифицированы для работы с PgJDBC. Если вы обнаружите ошибку или регресс в поддерживаемых версиях, сообщите о проблеме.
Примечание. Версии PgJDBC, начиная с 42.8.0, не гарантируют работу с PostgreSQL старше 9.1.
Большинству людей не требуется компилировать PgJDBC. Вы можете загрузить предварительно скомпилированный драйвер (jar) с сайта PostgreSQL JDBC или с помощью выбранного вами инструмента управления зависимостями:
Вы можете выполнить поиск в Центральном репозитории с помощью GroupId и ArtifactId org.postgresql:postgresql.
<!-- Add the following dependency to your pom.xml, -->
<!-- replacing LATEST with specific version as required -->
< dependency >
< groupId >org.postgresql</ groupId >
< artifactId >postgresql</ artifactId >
< version >LATEST</ version >
</ dependency >
Сборки моментальных снимков (сборки из master
ветки) также развертываются в репозитории моментальных снимков OSS Sonatype, поэтому вы можете протестировать текущую разрабатываемую версию (проверить некоторые исправления ошибок), включив репозиторий и используя последнюю версию SNAPSHOT.
В репозитории Copr Fedora также доступны (снимки) бинарные RPM.
Для получения дополнительной информации вы можете прочитать документацию по драйверу PgJDBC или общую документацию JDBC, пожалуйста, обратитесь к Учебным пособиям по Java™.
Орудия | Сорт |
---|---|
java.sql.Драйвер | org.postgresql.Драйвер |
javax.sql.Источник данных | org.postgresql.ds.PGSimpleDataSource |
javax.sql.ConnectionPoolDataSource | org.postgresql.ds.PGConnectionPoolDataSource |
javax.sql.XADataSource | org.postgresql.xa.PGXADataSource |
Драйвер распознает URL-адреса JDBC в форме:
jdbc:postgresql:database
jdbc:postgresql:
jdbc:postgresql://host/database
jdbc:postgresql://host/
jdbc:postgresql://host:port/database
jdbc:postgresql://host:port/
jdbc:postgresql://?service=myservice
Общий формат URL-адреса JDBC для подключения к серверу PostgreSQL следующий, элементы в квадратных скобках ([ ]) являются необязательными:
jdbc:postgresql:[//host[:port]/][database][?property1=value1[&property2=value2]...]
где:
localhost
.5432
. PgJDBC использует java.util.logging для ведения журнала. Чтобы настроить уровни журнала и управлять местом назначения вывода журнала (например, файл или консоль), настройте свойства java.util.logging соответствующим образом для средства ведения журнала org.postgresql. Обратите внимание, что наиболее подробные уровни журнала, « FINEST
», могут включать конфиденциальную информацию, такую как сведения о соединении, SQL-запрос или параметры команды.
Помимо стандартных параметров подключения драйвер поддерживает ряд дополнительных свойств, которые можно использовать для указания дополнительного поведения драйвера, специфичного для PostgreSQL™. Эти свойства могут быть указаны либо в URL-адресе подключения, либо в дополнительном параметре объекта Properties для DriverManager.getConnection.
Свойство | Тип | По умолчанию | Описание |
---|---|---|---|
пользователь | Нить | нулевой | Пользователь базы данных, от имени которого осуществляется соединение. |
пароль | Нить | нулевой | Пароль пользователя базы данных. |
параметры | Нить | нулевой | Укажите параметр инициализации соединения options. |
услуга | Нить | нулевой | Укажите имя службы, описанное в файле pg_service.conf. Ссылки: Файл службы соединений и Файл паролей. Файл «service» может предоставлять все свойства, включая «hostname=», «port=» и «dbname=». |
SSL | логическое значение | ЛОЖЬ | Контролировать использование SSL (значение true приводит к необходимости использования SSL) |
sslfactory | Нить | org.postgresql.ssl.LibPQFactory | Предоставьте класс SSLSocketFactory при использовании SSL. |
sslfactoryarg (устаревший) | Нить | нулевой | Аргумент пересылается конструктору класса SSLSocketFactory. |
SSL-режим | Нить | предпочитать | Управляет предпочтением открытия с использованием зашифрованного соединения SSL. |
sslcert | Нить | нулевой | Расположение SSL-сертификата клиента |
SSL-ключ | Нить | нулевой | Местоположение клиентского SSL-ключа PKCS#8 или PKCS#12. Для PKCS расширение должно быть .p12 или .pfx, а псевдоним должен быть user |
SSLRootcert | Нить | нулевой | Расположение корневого сертификата для аутентификации сервера. |
SSLhostnameverifier | Нить | нулевой | Имя класса (для использования в Class.forName(String)), который реализует javax.net.ssl.HostnameVerifier и может проверять имя хоста сервера. |
SSLпарольобратный вызов | Нить | нулевой | Имя класса (для использования в Class.forName(String)), который реализует javax.security.auth.callback.CallbackHandler и может обрабатывать PasswordCallback для пароля SSL. |
SSLпароль | Нить | нулевой | Пароль для SSL-ключа клиента (игнорируется, если установлен sslpasswordcallback). |
SSLпереговоры | Нить | постгрес | Определяет, будет ли использоваться SSL-согласование ALPN. Установите direct , чтобы выбрать ALPN. |
sendBufferSize | Целое число | -1 | Размер буфера записи сокета |
maxSendBufferSize | Целое число | 65536 | Максимальное количество байтов, буферизуемых перед отправкой на серверную часть. pgjdbc использует least(maxSendBufferSize, greatest(8192, SO_SNDBUF)) для определения размера буфера. |
getBufferSize | Целое число | -1 | Размер буфера чтения сокета |
logServerErrorDetail | логическое значение | истинный | Позволяет регистрировать подробные сведения об ошибках сервера (например, операторы и значения sql) и передавать их в исключениях. Установка значения false замаскирует эти ошибки, чтобы они не были доступны пользователям или журналам. |
РазрешитьEncodingChanges | логическое значение | ЛОЖЬ | Разрешить изменения в client_encoding |
журналунклоседконнектионс | логическое значение | ЛОЖЬ | Если соединения, которые не закрыты явно, собираются мусором, запишите в журнал трассировку стека с момента открытия соединения, чтобы отследить источник утечки. |
двоичныйПеренос | логическое значение | истинный | Если возможно, включите двоичную передачу для поддерживаемых встроенных типов. Установка значения false отключает любую двоичную передачу, если она не активирована индивидуально для каждого типа с binaryTransferEnable . Можно ли вообще использовать двоичную передачу, зависит от подготовленных операторов на стороне сервера ( prepareThreshold ). |
двоичныйTransferEnable | Нить | "" | Список типов, разделенных запятыми, для включения двоичной передачи. Либо номера OID, либо имена. |
двоичныйTransferDisable | Нить | "" | Список типов, разделенных запятыми, для отключения двоичной передачи. Либо номера OID, либо имена. Переопределяет значения в наборе драйверов по умолчанию и значениях, заданных с помощьюbinaryTransferEnable. |
подготовить порог | Целое число | 5 | Определите количество выполнений PreparedStatement , необходимое перед переключением на использование подготовленных операторов на стороне сервера. Значение по умолчанию — пять, что означает начало использования подготовленных операторов на стороне сервера при пятом выполнении одного и того же объекта PreparedStatement . Значение -1 активирует подготовленные операторы на стороне сервера и вызывает двоичную передачу для включенных типов ( binaryTransfer ). |
подготовленныйStatementCacheQueries | Целое число | 256 | Указывает максимальное количество записей в кэше подготовленных операторов для каждого соединения. Значение 0 отключает кэш. |
подготовленныйStatementCacheSizeMiB | Целое число | 5 | Указывает максимальный размер (в мегабайтах) кэша подготовленных операторов для каждого соединения. Значение 0 отключает кэш. |
defaultRowFetchSize | Целое число | 0 | Положительное количество строк, которые следует извлечь из базы данных, когда для ResultSet требуется больше строк на каждой итерации выборки. |
время входа в систему | Целое число | 0 | Укажите, как долго max(2147484) в секундах ждать установления соединения с базой данных. |
ConnectTimeout | Целое число | 10 | Значение тайм-аута в секундах max(2147484), используемое для операций подключения к сокету. |
сокеттаймаут | Целое число | 0 | Значение тайм-аута в секундах max(2147484), используемое для операций чтения сокета. |
отменитьсигналтаймаут | Целое число | 10 | Тайм-аут, используемый для отправки команды отмены. |
sslResponseTimeout | Целое число | 5000 | Тайм-аут сокета в миллисекундах ожидания ответа на запрос обновления SSL от сервера. |
tcpKeepAlive | логическое значение | ЛОЖЬ | Включите или отключите поддержку TCP. |
tcpNoDelay | логическое значение | истинный | Включите или отключите TCP без задержки. |
Имя приложения | Нить | JDBC-драйвер PostgreSQL | Имя приложения (требуется версия сервера >= 9.0). Если для предполагаетеMinServerVersion установлено значение >= 9.0, это будет отправлено в стартовых пакетах, в противном случае после установления соединения. |
только чтение | логическое значение | ЛОЖЬ | Переводит это соединение в режим только для чтения |
readOnlyMode | Нить | сделка | Определяет поведение, когда соединение установлено только для чтения. Возможные значения: игнорировать, транзакция, всегда. |
отключитьColumnSanitiser | логическое значение | ЛОЖЬ | Включить оптимизацию, отключающую очистку имен столбцов. |
предположить минсерверверсион | Нить | нулевой | Предположим, что сервер имеет по крайней мере эту версию |
текущаясхема | Нить | нулевой | Укажите схему (или несколько схем, разделенных запятыми), которые будут установлены в пути поиска. |
целевойсервертипе | Нить | любой | Указывает тип сервера для подключения, возможные значения: любой, главный, подчиненный (устарело), вторичный, предпочитаетСлаве (устарело), предпочитаетSecondary, предпочитаетПримари. |
хостRecheckSeconds | Целое число | 10 | Указывает период (в секундах), по истечении которого статус хоста проверяется повторно в случае его изменения. |
loadBalanceHosts | логическое значение | ЛОЖЬ | Если отключенные хосты подключаются в указанном порядке. Если включенные хосты выбираются случайным образом из набора подходящих кандидатов |
SocketFactory | Нить | нулевой | Укажите фабрику сокетов для создания сокетов |
сокетFactoryArg (устарело) | Нить | нулевой | Аргумент пересылается конструктору класса SocketFactory. |
автосохранение | Нить | никогда | Указывает, что должен делать драйвер в случае сбоя запроса. Возможные значения: всегда, никогда, консервативный. |
очисткаТочки сохранения | логическое значение | ЛОЖЬ | В режиме автосохранения драйвер устанавливает SAVEPOINT для каждого запроса. Возможно исчерпание общих буферов сервера. Установка значения true приведет к освобождению каждой SAVEPOINT за счет дополнительного обхода. |
предпочитаетеQueryMode | Нить | расширенный | Указывает, какой режим используется для выполнения запросов к базе данных, возможные значения: расширенный, расширенныйForPrepared, расширенныйCacheEverything, простой. |
reWriteBatchedInserts | логическое значение | ЛОЖЬ | Включите оптимизацию для перезаписи и свертывания совместимых пакетных операторов INSERT. |
escapeСинтаксисCallMode | Нить | выбирать | Указывает, как синтаксис escape-вызова JDBC преобразуется в базовый SQL (CALL/SELECT) для вызова процедур или функций (требуется версия сервера >= 11), возможные значения: select, callIfNoReturn, call |
maxResultBuffer | Нить | нулевой | Указывает размер буфера результатов в байтах, который не может быть превышен при чтении набора результатов. Может быть указан как конкретный размер (например, «100», «200M», «2G») или в процентах от максимальной кучи памяти (например, «10p», «20pct», «50percent»). |
gssLib | Нить | авто | Допустимые значения: auto (по умолчанию, см. ниже), sspi (принудительно SSPI) или gssapi (принудительно GSSAPI-JSSE). |
gssResponseTimeout | Целое число | 5000 | Тайм-аут сокета в миллисекундах ожидания ответа на запрос зашифрованного GSS-соединения от сервера. |
gssEncMode | Нить | позволять | Управляет предпочтением использования шифрования GSSAPI для соединения, значения: отключить, разрешить, предпочесть и потребовать. |
использоватьSpnego | Нить | ЛОЖЬ | Используйте SPNEGO в запросах аутентификации SSPI. |
адаптивная выборка | логическое значение | ЛОЖЬ | Указывает, должно ли количество строк, извлекаемых в ResultSet при каждой итерации выборки, быть динамическим. Количество строк будет рассчитано путем деления размера maxResultBuffer на максимальный размер строки, наблюдаемый на данный момент. Требуется объявление maxResultBuffer и defaultRowFetchSize для первой итерации. |
адаптивныйFetchMinimum | Целое число | 0 | Указывает минимальное количество строк, которое может быть рассчитано с помощью AdaptiveFetch. Количество строк, используемых AdaptiveFetch, не может быть ниже этого значения. |
адаптивныйFetchMaximum | Целое число | -1 | Указывает максимальное количество строк, которое может быть вычислено с помощью AdaptiveFetch. Количество строк, используемых AdaptiveFetch, не может превышать это значение. Любое отрицательное число, заданное как AdaptiveFetchMaximum, используется AdaptiveFetch как бесконечное количество строк. |
localSocketAddress | Нить | нулевой | Имя хоста или IP-адрес, заданные для явной настройки интерфейса, к которому драйвер будет привязывать клиентскую сторону соединения TCP/IP при подключении. |
quoteReturningIdentifiers | логическое значение | истинный | По умолчанию возвращаемые идентификаторы мы заключаем в двойные кавычки. Некоторые ORM уже цитируют их. Switch позволяет им отключить это |
аутентификацияPluginClassName | Нить | нулевой | Полное имя класса, реализующего интерфейс AuthenticationPlugin. Если это значение равно нулю, будет использоваться значение пароля в свойствах соединения. |
неизвестная длина | Целое число | Целое число.MAX_LENGTH | Указывает длину, возвращаемую для типов неизвестной длины. |
тип строки | Нить | нулевой | Укажите тип, который будет использоваться при привязке параметров PreparedStatement установленных с помощью setString() |
привязка канала | Нить | предпочитать | Эта опция управляет использованием клиентом привязки канала. require означает, что соединение должно использовать привязку канала, prefer означает, что клиент выберет привязку канала, если она доступна, а disable запрещает использование привязки канала. |
Свойство | Тип | По умолчанию | Описание |
---|---|---|---|
pgjdbc.config.cleanup.thread.ttl | длинный | 30000 | Драйвер имеет внутренний поток очистки, который отслеживает и очищает незакрытые соединения. Это свойство устанавливает продолжительность (в миллисекундах), в течение которой поток очистки будет работать, если очищать нечего. |
Информацию о том, как внести свой вклад в проект, см. в Руководстве по участию.