Der PostgreSQL JDBC-Treiber (kurz PgJDBC) ermöglicht Java-Programmen die Verbindung mit einer PostgreSQL-Datenbank unter Verwendung von standardmäßigem, datenbankunabhängigem Java-Code. Ist ein Open-Source-JDBC-Treiber, der in reinem Java (Typ 4) geschrieben ist und im nativen PostgreSQL-Netzwerkprotokoll kommuniziert.
Die aktuelle Version des Treibers sollte mit PostgreSQL 8.4 und höher unter Verwendung der Version 3.0 des Protokolls und Java 8 (JDBC 4.2) oder höher kompatibel sein. Sofern Sie keine ungewöhnlichen Anforderungen haben (alte Anwendungen oder JVMs ausführen), sollten Sie diesen Treiber verwenden.
PgJDBC-Regressionstests werden für alle PostgreSQL-Versionen seit 9.1 ausgeführt, einschließlich der Version „PostgreSQL aus Git-Master erstellen“. Es gibt andere abgeleitete Zweige von PostgreSQL, die jedoch nicht für die Ausführung mit PgJDBC zertifiziert sind. Wenn Sie einen Fehler oder eine Regression bei unterstützten Versionen feststellen, melden Sie bitte ein Problem.
Hinweis: Für PgJDBC-Versionen seit 42.8.0 kann nicht garantiert werden, dass sie mit PostgreSQL älter als 9.1 funktionieren.
Die meisten Leute müssen PgJDBC nicht kompilieren. Sie können den vorkompilierten Treiber (jar) von der PostgreSQL-JDBC-Site herunterladen oder das von Ihnen gewählte Tool zur Abhängigkeitsverwaltung verwenden:
Sie können im Central Repository mit GroupId und ArtifactId org.postgresql:postgresql suchen.
<!-- 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 >
Snapshot-Builds (Builds aus master
-Zweig) werden auch im OSS Sonatype Snapshot Repository bereitgestellt, sodass Sie die aktuelle Entwicklungsversion testen (einige Bugfixes testen) können, indem Sie das Repository aktivieren und die neueste SNAPSHOT-Version verwenden.
Es gibt auch verfügbare (Snapshot-)Binär-RPMs im Copr-Repository von Fedora.
Weitere Informationen finden Sie in der PgJDBC-Treiberdokumentation. Eine allgemeine JDBC-Dokumentation finden Sie in den Java™-Tutorials.
Implementiert | Klasse |
---|---|
java.sql.Treiber | org.postgresql.Driver |
javax.sql.DataSource | org.postgresql.ds.PGSimpleDataSource |
javax.sql.ConnectionPoolDataSource | org.postgresql.ds.PGConnectionPoolDataSource |
javax.sql.XADataSource | org.postgresql.xa.PGXADataSource |
Der Treiber erkennt JDBC-URLs der Form:
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
Das allgemeine Format für eine JDBC-URL zum Herstellen einer Verbindung zu einem PostgreSQL-Server lautet wie folgt, wobei Elemente in eckigen Klammern ([ ]) optional sind:
jdbc:postgresql:[//host[:port]/][database][?property1=value1[&property2=value2]...]
Wo:
localhost
.5432
. PgJDBC verwendet java.util.logging für die Protokollierung. Um Protokollebenen zu konfigurieren und das Protokollausgabeziel (z. B. Datei oder Konsole) zu steuern, konfigurieren Sie Ihre java.util.logging-Eigenschaften entsprechend für den org.postgresql-Logger. Beachten Sie, dass die detaillierteste Protokollebene, „ FINEST
“, vertrauliche Informationen wie Verbindungsdetails, Abfrage-SQL oder Befehlsparameter enthalten kann.
Zusätzlich zu den Standardverbindungsparametern unterstützt der Treiber eine Reihe zusätzlicher Eigenschaften, mit denen zusätzliches Treiberverhalten speziell für PostgreSQL™ angegeben werden kann. Diese Eigenschaften können entweder in der Verbindungs-URL oder in einem zusätzlichen Properties-Objektparameter für DriverManager.getConnection angegeben werden.
Eigentum | Typ | Standard | Beschreibung |
---|---|---|---|
Benutzer | Zeichenfolge | null | Der Datenbankbenutzer, in dessen Namen die Verbindung hergestellt wird. |
Passwort | Zeichenfolge | null | Das Passwort des Datenbankbenutzers. |
Optionen | Zeichenfolge | null | Geben Sie den Verbindungsinitialisierungsparameter „Optionen“ an. |
Service | Zeichenfolge | null | Geben Sie den in der Datei pg_service.conf beschriebenen Dienstnamen an. Referenzen: Die Verbindungsdienstdatei und die Passwortdatei. Die Datei „service“ kann alle Eigenschaften bereitstellen, einschließlich „hostname=“, „port=“ und „dbname=“. |
SSL | Boolescher Wert | FALSCH | Kontrollieren Sie die Verwendung von SSL (wahrer Wert führt dazu, dass SSL erforderlich ist) |
sslfactory | Zeichenfolge | org.postgresql.ssl.LibPQFactory | Stellen Sie bei Verwendung von SSL eine SSLSocketFactory-Klasse bereit. |
sslfactoryarg (veraltet) | Zeichenfolge | null | Argument wird an den Konstruktor der SSLSocketFactory-Klasse weitergeleitet. |
SSLmode | Zeichenfolge | bevorzugen | Steuert die Präferenz für das Öffnen über eine SSL-verschlüsselte Verbindung. |
sslcert | Zeichenfolge | null | Der Speicherort des SSL-Zertifikats des Clients |
SSLkey | Zeichenfolge | null | Der Speicherort des PKCS#8- oder PKCS#12-SSL-Schlüssels des Clients. Für PKCS muss die Erweiterung .p12 oder .pfx sein und der Alias muss user sein |
sslrootcert | Zeichenfolge | null | Der Speicherort des Stammzertifikats zur Authentifizierung des Servers. |
sslhostnameverifier | Zeichenfolge | null | Der Name einer Klasse (zur Verwendung in Class.forName(String)), die javax.net.ssl.HostnameVerifier implementiert und den Hostnamen des Servers überprüfen kann. |
SSL-Passwortrückruf | Zeichenfolge | null | Der Name einer Klasse (zur Verwendung in Class.forName(String)), die javax.security.auth.callback.CallbackHandler implementiert und PasswordCallback für das SSL-Passwort verarbeiten kann. |
SSL-Passwort | Zeichenfolge | null | Das Passwort für den SSL-Schlüssel des Clients (wird ignoriert, wenn sslpasswordcallback festgelegt ist) |
sslnegotiation | Zeichenfolge | postgres | Legt fest, ob die ALPN-SSL-Aushandlung verwendet wird oder nicht. Stellen Sie direct ein, um ALPN auszuwählen. |
sendBufferSize | Ganze Zahl | -1 | Größe des Socket-Schreibpuffers |
maxSendBufferSize | Ganze Zahl | 65536 | Maximale Menge an Bytes, die vor dem Senden an das Backend gepuffert werden. pgjdbc verwendet least(maxSendBufferSize, greatest(8192, SO_SNDBUF)) um die Puffergröße zu bestimmen. |
Empfangspuffergröße | Ganze Zahl | -1 | Größe des Socket-Lesepuffers |
logServerErrorDetail | Boolescher Wert | WAHR | Ermöglicht die Protokollierung und Weitergabe von Serverfehlerdetails (z. B. SQL-Anweisungen und -Werte) in Ausnahmen. Durch die Einstellung „false“ werden diese Fehler maskiert, sodass sie weder Benutzern noch Protokollen angezeigt werden. |
AllowEncodingChanges | Boolescher Wert | FALSCH | Erlauben Sie Änderungen in client_encoding |
logUnclosedConnections | Boolescher Wert | FALSCH | Wenn nicht explizit geschlossene Verbindungen durch Garbage Collection erfasst werden, protokollieren Sie den Stacktrace ab dem Öffnen der Verbindung, um die Leckquelle zu verfolgen |
Binärtransfer | Boolescher Wert | WAHR | Aktivieren Sie nach Möglichkeit die Binärübertragung für unterstützte integrierte Typen. Wenn Sie dies auf „false“ setzen, wird jede Binärübertragung deaktiviert, es sei denn, sie wird für jeden Typ einzeln mit binaryTransferEnable aktiviert. Ob es überhaupt möglich ist, eine binäre Übertragung zu verwenden, hängt von serverseitig vorbereiteten Anweisungen ab (siehe prepareThreshold ). |
binärTransferEnable | Zeichenfolge | „“ | Durch Kommas getrennte Liste von Typen, um die binäre Übertragung zu ermöglichen. Entweder OID-Nummern oder Namen. |
binärTransferDisable | Zeichenfolge | „“ | Durch Kommas getrennte Liste von Typen zum Deaktivieren der Binärübertragung. Entweder OID-Nummern oder Namen. Überschreibt Werte im Standardsatz des Treibers und Werte, die mit „binaryTransferEnable“ festgelegt wurden. |
PrepareThreshold | Ganze Zahl | 5 | Bestimmen Sie die Anzahl der PreparedStatement -Ausführungen, die erforderlich sind, bevor Sie auf die Verwendung serverseitig vorbereiteter Anweisungen umstellen. Der Standardwert ist fünf, was bedeutet, dass mit der Verwendung serverseitig vorbereiteter Anweisungen bei der fünften Ausführung desselben PreparedStatement -Objekts begonnen wird. Der Wert -1 aktiviert serverseitig vorbereitete Anweisungen und erzwingt die Binärübertragung für aktivierte Typen (siehe binaryTransfer ). |
PreparedStatementCacheQueries | Ganze Zahl | 256 | Gibt die maximale Anzahl von Einträgen im verbindungsbezogenen Cache vorbereiteter Anweisungen an. Ein Wert von 0 deaktiviert den Cache. |
vorbereitetStatementCacheSizeMiB | Ganze Zahl | 5 | Gibt die maximale Größe (in Megabyte) eines vorbereiteten Anweisungscache pro Verbindung an. Ein Wert von 0 deaktiviert den Cache. |
defaultRowFetchSize | Ganze Zahl | 0 | Positive Anzahl von Zeilen, die aus der Datenbank abgerufen werden sollen, wenn bei jeder Abrufiteration mehr Zeilen für ResultSet benötigt werden |
loginTimeout | Ganze Zahl | 0 | Geben Sie an, wie lange in Sekunden max(2147484) auf den Aufbau einer Datenbankverbindung gewartet werden soll. |
connectTimeout | Ganze Zahl | 10 | Der Timeout-Wert in Sekunden max(2147484), der für Socket-Verbindungsvorgänge verwendet wird. |
socketTimeout | Ganze Zahl | 0 | Der Timeout-Wert in Sekunden max(2147484), der für Socket-Lesevorgänge verwendet wird. |
cancelSignalTimeout | Ganze Zahl | 10 | Das Zeitlimit, das zum Senden des Abbruchbefehls verwendet wird. |
sslResponseTimeout | Ganze Zahl | 5000 | Socket-Timeout in Millisekunden beim Warten auf eine Antwort auf eine Anfrage nach einem SSL-Upgrade vom Server. |
tcpKeepAlive | Boolescher Wert | FALSCH | Aktivieren oder deaktivieren Sie TCP-Keep-Alive. |
tcpNoDelay | Boolescher Wert | WAHR | Aktivieren oder deaktivieren Sie TCP ohne Verzögerung. |
Anwendungsname | Zeichenfolge | PostgreSQL JDBC-Treiber | Der Anwendungsname (Serverversion >= 9.0 erforderlich). Wenn „AnnehmenMinServerVersion“ auf >= 9.0 gesetzt ist, wird dies in den Startup-Paketen gesendet, andernfalls nach dem Herstellen der Verbindung |
schreibgeschützt | Boolescher Wert | FALSCH | Versetzt diese Verbindung in den schreibgeschützten Modus |
readOnlyMode | Zeichenfolge | Transaktion | Gibt das Verhalten an, wenn eine Verbindung schreibgeschützt ist. Mögliche Werte: ignorieren, Transaktion, immer |
disableColumnSanitizer | Boolescher Wert | FALSCH | Aktivieren Sie die Optimierung, die die Bereinigung von Spaltennamen deaktiviert |
nehmeMinServerVersion an | Zeichenfolge | null | Gehen Sie davon aus, dass der Server mindestens diese Version hat |
aktuelles Schema | Zeichenfolge | null | Geben Sie das Schema (oder mehrere durch Kommas getrennte Schemas) an, das im Suchpfad festgelegt werden soll |
targetServerType | Zeichenfolge | beliebig | Gibt an, welche Art von Server verbunden werden soll. Mögliche Werte: any, master, Slave (veraltet), sekundär, PreferSlave (veraltet), PreferSecondary, PreferPrimary |
hostRecheckSeconds | Ganze Zahl | 10 | Gibt den Zeitraum (Sekunden) an, nach dem der Hoststatus erneut überprüft wird, falls er sich geändert hat |
LoadBalanceHosts | Boolescher Wert | FALSCH | Wenn deaktivierte Hosts in der angegebenen Reihenfolge verbunden sind. Wenn diese Option aktiviert ist, werden Hosts zufällig aus der Menge geeigneter Kandidaten ausgewählt |
socketFactory | Zeichenfolge | null | Geben Sie eine Socket-Factory für die Socket-Erstellung an |
socketFactoryArg (veraltet) | Zeichenfolge | null | Argument, das an den Konstruktor der SocketFactory-Klasse weitergeleitet wird. |
Automatisches Speichern | Zeichenfolge | niemals | Gibt an, was der Treiber tun soll, wenn eine Abfrage fehlschlägt. Mögliche Werte: immer, nie, konservativ |
cleanupSavepoints | Boolescher Wert | FALSCH | Im Autosave-Modus legt der Treiber für jede Abfrage einen SAVEPOINT fest. Es ist möglich, dass die gemeinsam genutzten Puffer des Servers erschöpft sind. Wenn Sie dies auf „true“ setzen, wird jeder SAVEPOINT auf Kosten einer zusätzlichen Hin- und Rückfahrt freigegeben. |
PreferQueryMode | Zeichenfolge | erweitert | Gibt an, welcher Modus zum Ausführen von Abfragen an die Datenbank verwendet wird. Mögliche Werte: erweitert, erweitertForPrepared, erweitertCacheEverything, einfach |
reWriteBatchedInserts | Boolescher Wert | FALSCH | Aktivieren Sie die Optimierung, um kompatible INSERT-Anweisungen im Batch neu zu schreiben und zu reduzieren. |
escapeSyntaxCallMode | Zeichenfolge | wählen | Gibt an, wie die JDBC-Escape-Aufrufsyntax in zugrunde liegendes SQL (CALL/SELECT) umgewandelt wird, um Prozeduren oder Funktionen aufzurufen (erfordert Serverversion >= 11), mögliche Werte: select, callIfNoReturn, call |
maxResultBuffer | Zeichenfolge | null | Gibt die Größe des Ergebnispuffers in Bytes an, die beim Lesen des Ergebnissatzes nicht überschritten werden darf. Kann als bestimmte Größe (z. B. „100“, „200 MB“, „2 GB“) oder als Prozentsatz des maximalen Heap-Speichers (z. B. „10p“, „20pct“, „50percent“) angegeben werden. |
gssLib | Zeichenfolge | Auto | Zulässige Werte sind auto (Standard, siehe unten), sspi (SSPI erzwingen) oder gssapi (GSSAPI-JSSE erzwingen). |
gssResponseTimeout | Ganze Zahl | 5000 | Socket-Timeout in Millisekunden beim Warten auf eine Antwort auf eine Anfrage nach einer GSS-verschlüsselten Verbindung vom Server. |
gssEncMode | Zeichenfolge | erlauben | Steuert die Präferenz für die Verwendung der GSSAPI-Verschlüsselung für die Verbindung. Die Werte sind „Deaktivieren“, „Zulassen“, „Bevorzugen“ und „Anfordern“. |
Verwenden Sie Spnego | Zeichenfolge | FALSCH | Verwenden Sie SPNEGO in SSPI-Authentifizierungsanfragen |
adaptiveFetch | Boolescher Wert | FALSCH | Gibt an, ob die Anzahl der von jeder Abrufiteration in ResultSet abgerufenen Zeilen dynamisch sein soll. Die Anzahl der Zeilen wird berechnet, indem die maxResultBuffer-Größe durch die bisher beobachtete maximale Zeilengröße geteilt wird. Erfordert die Deklaration von maxResultBuffer und defaultRowFetchSize für die erste Iteration. |
adaptiveFetchMinimum | Ganze Zahl | 0 | Gibt die Mindestanzahl an Zeilen an, die von adaptiveFetch berechnet werden können. Die Anzahl der von adaptiveFetch verwendeten Zeilen darf diesen Wert nicht unterschreiten. |
adaptiveFetchMaximum | Ganze Zahl | -1 | Gibt die maximale Anzahl von Zeilen an, die von adaptiveFetch berechnet werden können. Die Anzahl der von adaptiveFetch verwendeten Zeilen darf diesen Wert nicht überschreiten. Jede als adaptiveFetchMaximum festgelegte negative Zahl wird von adaptiveFetch als unendliche Anzahl von Zeilen verwendet. |
localSocketAddress | Zeichenfolge | null | Hostname oder IP-Adresse, die angegeben wird, um die Schnittstelle explizit zu konfigurieren, an die der Treiber die Clientseite der TCP/IP-Verbindung beim Herstellen einer Verbindung bindet. |
quoteReturningIdentifiers | Boolescher Wert | WAHR | Standardmäßig werden zurückgegebene Bezeichner in doppelte Anführungszeichen gesetzt. Einige ORMs zitieren sie bereits. Mit dem Schalter können sie dies ausschalten |
AuthenticationPluginClassName | Zeichenfolge | null | Vollqualifizierter Klassenname der Klasse, die die AuthenticationPlugin-Schnittstelle implementiert. Wenn dieser null ist, wird der Passwortwert in den Verbindungseigenschaften verwendet. |
unbekannte Länge | Ganze Zahl | Ganzzahl.MAX_LENGTH | Gibt die Länge an, die für Typen unbekannter Länge zurückgegeben werden soll |
Stringtyp | Zeichenfolge | null | Geben Sie den Typ an, der beim Binden von PreparedStatement -Parametern verwendet werden soll, die über setString() festgelegt wurden. |
Kanalbindung | Zeichenfolge | bevorzugen | Diese Option steuert die Verwendung der Kanalbindung durch den Client. require bedeutet, dass die Verbindung Kanalbindung verwenden muss, prefer bedeutet, dass der Client die Kanalbindung wählt, sofern verfügbar, und disable verhindert die Verwendung der Kanalbindung. |
Eigentum | Typ | Standard | Beschreibung |
---|---|---|---|
pgjdbc.config.cleanup.thread.ttl | lang | 30000 | Der Treiber verfügt über einen internen Bereinigungsthread, der nicht geschlossene Verbindungen überwacht und bereinigt. Diese Eigenschaft legt die Dauer (in Millisekunden) fest, die der Bereinigungsthread weiter ausgeführt wird, wenn nichts zu bereinigen ist. |
Informationen darüber, wie Sie zum Projekt beitragen können, finden Sie in den Beitragsrichtlinien