Le pilote JDBC PostgreSQL (PgJDBC en abrégé) permet aux programmes Java de se connecter à une base de données PostgreSQL à l'aide d'un code Java standard indépendant de la base de données. Est un pilote JDBC open source écrit en Java pur (Type 4) et communique dans le protocole réseau natif PostgreSQL.
La version actuelle du pilote doit être compatible avec PostgreSQL 8.4 et supérieur en utilisant la version 3.0 du protocole et Java 8 (JDBC 4.2) ou supérieur. Sauf si vous avez des exigences inhabituelles (exécuter d'anciennes applications ou des JVM), c'est le pilote que vous devriez utiliser.
Les tests de régression PgJDBC sont exécutés sur toutes les versions de PostgreSQL depuis la 9.1, y compris la version "build PostgreSQL from git master". Il existe d'autres forks dérivés de PostgreSQL mais ils n'ont pas été certifiés pour fonctionner avec PgJDBC. Si vous trouvez un bug ou une régression sur les versions prises en charge, veuillez signaler un problème.
Remarque : les versions de PgJDBC depuis 42.8.0 ne sont pas garanties de fonctionner avec PostgreSQL antérieur à 9.1.
La plupart des gens n’ont pas besoin de compiler PgJDBC. Vous pouvez télécharger le pilote précompilé (jar) depuis le site PostgreSQL JDBC ou en utilisant l'outil de gestion des dépendances de votre choix :
Vous pouvez effectuer une recherche sur le référentiel central avec GroupId et 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 >
Les versions d'instantanés (versions à partir de la branche master
) sont également déployées dans le référentiel d'instantanés OSS Sonatype, afin que vous puissiez tester la version de développement actuelle (tester certaines corrections de bogues) en activant le référentiel et en utilisant la dernière version de SNAPSHOT.
Il existe également des RPM binaires (instantanés) disponibles dans le référentiel Copr de Fedora.
Pour plus d'informations, vous pouvez lire la documentation du pilote PgJDBC ou pour la documentation générale JDBC, veuillez vous référer aux didacticiels Java™.
Outils | Classe |
---|---|
java.sql.Driver | org.postgresql.Driver |
javax.sql.DataSource | org.postgresql.ds.PGSimpleDataSource |
javax.sql.ConnectionPoolDataSource | org.postgresql.ds.PGConnectionPoolDataSource |
javax.sql.XADataSource | org.postgresql.xa.PGXADataSource |
Le pilote reconnaît les URL JDBC de la forme :
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
Le format général d'une URL JDBC pour la connexion à un serveur PostgreSQL est le suivant, les éléments entre crochets ([ ]) étant facultatifs :
jdbc:postgresql:[//host[:port]/][database][?property1=value1[&property2=value2]...]
où:
localhost
.5432
. PgJDBC utilise java.util.logging pour la journalisation. Pour configurer les niveaux de journalisation et contrôler la destination de sortie du journal (par exemple, fichier ou console), configurez vos propriétés java.util.logging en conséquence pour le consignateur org.postgresql. Notez que les niveaux de journalisation les plus détaillés, « FINEST
», peuvent inclure des informations sensibles telles que les détails de connexion, les requêtes SQL ou les paramètres de commande.
En plus des paramètres de connexion standard, le pilote prend en charge un certain nombre de propriétés supplémentaires qui peuvent être utilisées pour spécifier un comportement de pilote supplémentaire spécifique à PostgreSQL™. Ces propriétés peuvent être spécifiées soit dans l'URL de connexion, soit dans un paramètre d'objet Propriétés supplémentaire pour DriverManager.getConnection.
Propriété | Taper | Défaut | Description |
---|---|---|---|
utilisateur | Chaîne | nul | Utilisateur de la base de données pour le compte duquel la connexion est effectuée. |
mot de passe | Chaîne | nul | Le mot de passe de l'utilisateur de la base de données. |
choix | Chaîne | nul | Spécifiez le paramètre d'initialisation de la connexion 'options'. |
service | Chaîne | nul | Spécifiez le nom du « service » décrit dans le fichier pg_service.conf. Références : Le fichier du service de connexion et le fichier de mots de passe. Le fichier 'service' peut fournir toutes les propriétés, y compris 'hostname=', 'port=' et 'dbname='. |
SSL | Booléen | FAUX | Contrôler l'utilisation de SSL (la vraie valeur entraîne l'exigence de SSL) |
usine SSL | Chaîne | org.postgresql.ssl.LibPQFactory | Fournissez une classe SSLSocketFactory lors de l'utilisation de SSL. |
sslfactoryarg (obsolète) | Chaîne | nul | Argument transmis au constructeur de la classe SSLSocketFactory. |
mode SSL | Chaîne | préférer | Contrôle la préférence d'ouverture à l'aide d'une connexion cryptée SSL. |
certificat SSL | Chaîne | nul | L'emplacement du certificat SSL du client |
clé SSL | Chaîne | nul | L'emplacement de la clé SSL PKCS#8 ou PKCS#12 du client, pour PKCS l'extension doit être .p12 ou .pfx et l'alias doit être user |
certificat racine SSL | Chaîne | nul | L'emplacement du certificat racine pour authentifier le serveur. |
vérificateur de nom d'hôte SSL | Chaîne | nul | Le nom d'une classe (à utiliser dans Class.forName(String)) qui implémente javax.net.ssl.HostnameVerifier et peut vérifier le nom d'hôte du serveur. |
rappel de mot de passe ssl | Chaîne | nul | Le nom d'une classe (à utiliser dans Class.forName(String)) qui implémente javax.security.auth.callback.CallbackHandler et peut gérer PasswordCallback pour le mot de passe SSL. |
mot de passe ssl | Chaîne | nul | Le mot de passe de la clé SSL du client (ignoré si sslpasswordcallback est défini) |
négociation SSL | Chaîne | postgres | Détermine si la négociation SSL ALPN sera utilisée ou non. Réglez sur direct pour choisir ALPN. |
envoyerBufferSize | Entier | -1 | Taille du tampon d’écriture du socket |
maxSendBufferSize | Entier | 65536 | Quantité maximale d'octets mis en mémoire tampon avant d'être envoyés au backend. pgjdbc utilise least(maxSendBufferSize, greatest(8192, SO_SNDBUF)) pour déterminer la taille du tampon. |
recevoirBufferSize | Entier | -1 | Taille du tampon de lecture du socket |
logServerErrorDetail | Booléen | vrai | Permet aux détails des erreurs du serveur (tels que les instructions et les valeurs SQL) d'être enregistrés et transmis dans les exceptions. La définition sur false masquera ces erreurs afin qu'elles ne soient pas exposées aux utilisateurs ou aux journaux. |
AllowEncodingChanges | Booléen | FAUX | Autoriser les modifications dans client_encoding |
logUnclosedConnections | Booléen | FAUX | Lorsque les connexions qui ne sont pas explicitement fermées sont récupérées, enregistrez la trace de la pile depuis l'ouverture de la connexion pour retracer la source de la fuite. |
transfert binaire | Booléen | vrai | Activez le transfert binaire pour les types intégrés pris en charge si possible. Définir ceci sur false désactive tout transfert binaire à moins qu'il ne soit activé individuellement pour chaque type avec binaryTransferEnable . La possibilité d'utiliser le transfert binaire dépend des instructions préparées côté serveur (voir prepareThreshold ). |
binaireTransferEnable | Chaîne | "" | Liste de types séparés par des virgules pour activer le transfert binaire. Soit des numéros OID, soit des noms. |
binaireTransferDisable | Chaîne | "" | Liste de types séparés par des virgules pour désactiver le transfert binaire. Soit des numéros OID, soit des noms. Remplace les valeurs de l'ensemble par défaut du pilote et les valeurs définies avec binaireTransferEnable. |
préparer le seuil | Entier | 5 | Déterminez le nombre d’exécutions PreparedStatement requises avant de passer à l’utilisation d’instructions préparées côté serveur. La valeur par défaut est cinq, ce qui signifie commencer à utiliser les instructions préparées côté serveur lors de la cinquième exécution du même objet PreparedStatement . Une valeur de -1 active les instructions préparées côté serveur et force le transfert binaire pour les types activés (voir binaryTransfer ). |
PrepareStatementCacheQueries | Entier | 256 | Spécifie le nombre maximum d'entrées dans le cache par connexion des instructions préparées. Une valeur de 0 désactive le cache. |
préparéStatementCacheSizeMiB | Entier | 5 | Spécifie la taille maximale (en mégaoctets) d'un cache d'instructions préparées par connexion. Une valeur de 0 désactive le cache. |
taille par défautRowFetchSize | Entier | 0 | Nombre positif de lignes qui doivent être extraites de la base de données lorsque davantage de lignes sont nécessaires pour ResultSet à chaque itération d'extraction |
connexionTimeout | Entier | 0 | Spécifiez combien de temps en secondes maximum (2147484) attendre l'établissement d'une connexion à la base de données. |
connectTimeout | Entier | 10 | La valeur du délai d'attente en secondes maximum (2147484) utilisée pour les opérations de connexion par socket. |
socketTimeout | Entier | 0 | La valeur du délai d'attente en secondes maximum (2147484) utilisée pour les opérations de lecture de socket. |
annulerSignalTimeout | Entier | 10 | Le délai d'attente utilisé pour envoyer la commande d'annulation. |
sslResponseTimeout | Entier | 5000 | Délai d'expiration du socket en millisecondes en attente d'une réponse à une demande de mise à niveau SSL du serveur. |
tcpKeepAlive | Booléen | FAUX | Activez ou désactivez TCP keep-alive. |
tcpNoDelay | Booléen | vrai | Activez ou désactivez TCP sans délai. |
Nom de l'application | Chaîne | Pilote JDBC PostgreSQL | Le nom de l'application (nécessite une version du serveur >= 9.0). Si supposeMinServerVersion est défini sur >= 9.0, cela sera envoyé dans les paquets de démarrage, sinon une fois la connexion établie |
lecture seule | Booléen | FAUX | Met cette connexion en mode lecture seule |
mode lecture seule | Chaîne | transaction | Spécifie le comportement lorsqu'une connexion est définie en lecture seule, valeurs possibles : ignorer, transaction, toujours |
désactiverColumnSanitiser | Booléen | FAUX | Activer l'optimisation qui désactive le désinfectant pour les noms de colonnes |
supposeMinServerVersion | Chaîne | nul | Supposons que le serveur soit au moins de cette version |
Schéma actuel | Chaîne | nul | Spécifiez le schéma (ou plusieurs schémas séparés par des virgules) à définir dans le chemin de recherche |
Type de serveur cible | Chaîne | n'importe lequel | Spécifie le type de serveur auquel se connecter, les valeurs possibles : any, master, slave (obsolète), secondaire, préfèreSlave (obsolète), préfèreSecondaire, préfèrePrimary. |
hôteRecheckSeconds | Entier | 10 | Spécifie la période (secondes) après laquelle l'état de l'hôte est à nouveau vérifié au cas où il aurait changé |
LoadBalanceHosts | Booléen | FAUX | Si les hôtes désactivés sont connectés dans l’ordre indiqué. Si les hôtes activés sont choisis au hasard parmi l'ensemble des candidats appropriés |
socketFactory | Chaîne | nul | Spécifier une fabrique de sockets pour la création de sockets |
socketFactoryArg (obsolète) | Chaîne | nul | Argument transmis au constructeur de la classe SocketFactory. |
sauvegarde automatique | Chaîne | jamais | Spécifie ce que le pilote doit faire si une requête échoue, valeurs possibles : toujours, jamais, conservateur |
points de sauvegarde de nettoyage | Booléen | FAUX | En mode de sauvegarde automatique, le pilote définit un SAVEPOINT pour chaque requête. Il est possible d'épuiser les tampons partagés du serveur. Définir cela sur true libérera chaque SAVEPOINT au prix d'un aller-retour supplémentaire. |
préfèreQueryMode | Chaîne | étendu | Spécifie le mode utilisé pour exécuter des requêtes sur la base de données, valeurs possibles : Extended, ExtendedForPrepared, ExtendedCacheEverything, simple |
reWriteBatchedInserts | Booléen | FAUX | Activez l'optimisation pour réécrire et réduire les instructions INSERT compatibles qui sont par lots. |
escapeSyntaxCallMode | Chaîne | sélectionner | Spécifie comment la syntaxe de l'appel d'échappement JDBC est transformée en SQL sous-jacent (CALL/SELECT), pour appeler des procédures ou des fonctions (nécessite une version du serveur >= 11), valeurs possibles : select, callIfNoReturn, call |
maxResultBuffer | Chaîne | nul | Spécifie la taille du tampon de résultats en octets, qui ne peut pas être dépassée lors de la lecture du jeu de résultats. Peut être spécifié en tant que taille particulière (c'est-à-dire "100", "200M", "2G") ou en pourcentage de la mémoire tas maximale (c'est-à-dire "10p", "20pct", "50percent") |
gssLib | Chaîne | auto | Les valeurs autorisées sont auto (par défaut, voir ci-dessous), sspi (forcer SSPI) ou gssapi (forcer GSSAPI-JSSE). |
gssResponseTimeout | Entier | 5000 | Délai d'expiration du socket en millisecondes en attente d'une réponse à une demande de connexion cryptée GSS du serveur. |
gssEncMode | Chaîne | permettre | Contrôle la préférence d'utilisation du cryptage GSSAPI pour la connexion. Les valeurs sont désactiver, autoriser, préférer et exiger. |
utiliserSpnego | Chaîne | FAUX | Utiliser SPNEGO dans les demandes d'authentification SSPI |
récupération adaptative | Booléen | FAUX | Spécifie si le nombre de lignes récupérées dans ResultSet par chaque itération de récupération doit être dynamique. Le nombre de lignes sera calculé en divisant la taille maxResultBuffer par la taille de ligne maximale observée jusqu'à présent. Nécessite de déclarer maxResultBuffer et defaultRowFetchSize pour la première itération. |
adaptativeFetchMinimum | Entier | 0 | Spécifie le nombre minimum de lignes pouvant être calculées par adaptiveFetch. Le nombre de lignes utilisées par adaptiveFetch ne peut pas descendre en dessous de cette valeur. |
adaptativeFetchMaximum | Entier | -1 | Spécifie le nombre maximum de lignes pouvant être calculées par adaptiveFetch. Le nombre de lignes utilisées par adaptiveFetch ne peut pas dépasser cette valeur. Tout nombre négatif défini comme adaptiveFetchMaximum est utilisé par adaptiveFetch comme nombre infini de lignes. |
adresseSocketlocale | Chaîne | nul | Nom d'hôte ou adresse IP donné pour configurer explicitement l'interface à laquelle le pilote liera le côté client de la connexion TCP/IP lors de la connexion. |
quoteReturningIdentifiers | Booléen | vrai | Par défaut, nous citons les identifiants de retour entre guillemets. Certains ORM les citent déjà. Switch leur permet de désactiver cela |
nomPluginClassName d'authentification | Chaîne | nul | Nom de classe complet de la classe implémentant l'interface AuthenticationPlugin. Si celui-ci est nul, la valeur du mot de passe dans les propriétés de connexion sera utilisée. |
longueur inconnue | Entier | Entier.MAX_LENGTH | Spécifie la longueur à renvoyer pour les types de longueur inconnue |
type de chaîne | Chaîne | nul | Spécifiez le type à utiliser lors de la liaison des paramètres PreparedStatement définis via setString() |
liaison de canal | Chaîne | préférer | Cette option contrôle l'utilisation par le client de la liaison de canal. require signifie que la connexion doit utiliser la liaison de canal, prefer signifie que le client choisira la liaison de canal si disponible, et disable empêche l'utilisation de la liaison de canal. |
Propriété | Taper | Défaut | Description |
---|---|---|---|
pgjdbc.config.cleanup.thread.ttl | long | 30000 | Le pilote dispose d'un thread de nettoyage interne qui surveille et nettoie les connexions non fermées. Cette propriété définit la durée (en millisecondes) pendant laquelle le thread de nettoyage continuera à s'exécuter s'il n'y a rien à nettoyer. |
Pour plus d'informations sur la manière de contribuer au projet, consultez les lignes directrices de contribution.