El controlador JDBC de PostgreSQL (PgJDBC para abreviar) permite que los programas Java se conecten a una base de datos PostgreSQL utilizando código Java estándar independiente de la base de datos. Es un controlador JDBC de código abierto escrito en Java puro (Tipo 4) y se comunica en el protocolo de red nativo PostgreSQL.
La versión actual del controlador debe ser compatible con PostgreSQL 8.4 y superior utilizando la versión 3.0 del protocolo y Java 8 (JDBC 4.2) o superior. A menos que tenga requisitos inusuales (ejecutar aplicaciones antiguas o JVM), este es el controlador que debe utilizar.
Las pruebas de regresión de PgJDBC se ejecutan en todas las versiones de PostgreSQL desde la 9.1, incluida la versión "construir PostgreSQL desde git master". Existen otras bifurcaciones derivadas de PostgreSQL pero no han sido certificadas para ejecutarse con PgJDBC. Si encuentra un error o una regresión en las versiones compatibles, presente un problema.
Nota: No se garantiza que las versiones de PgJDBC desde 42.8.0 funcionen con PostgreSQL anteriores a 9.1.
La mayoría de la gente no necesita compilar PgJDBC. Puede descargar el controlador precompilado (jar) desde el sitio JDBC de PostgreSQL o utilizando la herramienta de administración de dependencias que elija:
Puede buscar en el repositorio central con GroupId y 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 >
Las compilaciones de instantáneas (compilaciones de la rama master
) también se implementan en OSS Sonatype Snapshot Repository, por lo que puede probar la versión de desarrollo actual (probar algunas correcciones de errores) habilitando el repositorio y usando la última versión de SNAPSHOT.
También hay RPM binarios (instantáneas) disponibles en el repositorio Copr de Fedora.
Para obtener más información, puede leer la documentación del controlador PgJDBC o, para obtener documentación general de JDBC, consulte los tutoriales de Java™.
Implementos | Clase |
---|---|
java.sql.Driver | org.postgresql.Driver |
javax.sql.fuente de datos | org.postgresql.ds.PGSimpleDataSource |
javax.sql.ConnectionPoolDataSource | org.postgresql.ds.PGConnectionPoolDataSource |
javax.sql.XADataSource | org.postgresql.xa.PGXADataSource |
El controlador reconoce las URL JDBC del formato:
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
El formato general de una URL JDBC para conectarse a un servidor PostgreSQL es el siguiente, siendo opcionales los elementos entre corchetes ([ ]):
jdbc:postgresql:[//host[:port]/][database][?property1=value1[&property2=value2]...]
dónde:
localhost
.5432
. PgJDBC usa java.util.logging para iniciar sesión. Para configurar los niveles de registro y controlar el destino de salida del registro (por ejemplo, archivo o consola), configure sus propiedades java.util.logging en consecuencia para el registrador org.postgresql. Tenga en cuenta que los niveles de registro más detallados, " FINEST
", pueden incluir información confidencial como detalles de conexión, consultas SQL o parámetros de comando.
Además de los parámetros de conexión estándar, el controlador admite una serie de propiedades adicionales que se pueden utilizar para especificar un comportamiento adicional del controlador específico de PostgreSQL™. Estas propiedades se pueden especificar en la URL de conexión o en un parámetro de objeto Propiedades adicional para DriverManager.getConnection.
Propiedad | Tipo | Por defecto | Descripción |
---|---|---|---|
usuario | Cadena | nulo | El usuario de la base de datos en cuyo nombre se realiza la conexión. |
contraseña | Cadena | nulo | La contraseña del usuario de la base de datos. |
opciones | Cadena | nulo | Especifique el parámetro de inicialización de conexión 'opciones'. |
servicio | Cadena | nulo | Especifique el nombre del 'servicio' descrito en el archivo pg_service.conf. Referencias: El archivo del servicio de conexión y el archivo de contraseña. El archivo 'servicio' puede proporcionar todas las propiedades, incluidas 'hostname=', 'port=' y 'dbname='. |
SSL | Booleano | FALSO | Controlar el uso de SSL (el valor verdadero hace que se requiera SSL) |
fábrica | Cadena | org.postgresql.ssl.LibPQFactory | Proporcione una clase SSLSocketFactory cuando utilice SSL. |
sslfactoryarg (en desuso) | Cadena | nulo | Argumento reenviado al constructor de la clase SSLSocketFactory. |
modo ssl | Cadena | preferir | Controla la preferencia de apertura mediante una conexión cifrada SSL. |
certificado ssl | Cadena | nulo | La ubicación del certificado SSL del cliente. |
clave ssl | Cadena | nulo | La ubicación de la clave SSL PKCS#8 o PKCS#12 del cliente; para PKCS la extensión debe ser .p12 o .pfx y el alias debe ser user |
sslrootcert | Cadena | nulo | La ubicación del certificado raíz para autenticar el servidor. |
sslhostnameverificador | Cadena | nulo | El nombre de una clase (para usar en Class.forName(String)) que implementa javax.net.ssl.HostnameVerifier y puede verificar el nombre de host del servidor. |
devolución de llamada de contraseña ssl | Cadena | nulo | El nombre de una clase (para usar en Class.forName(String)) que implementa javax.security.auth.callback.CallbackHandler y puede manejar PasswordCallback para la contraseña SSL. |
contraseña ssl | Cadena | nulo | La contraseña para la clave SSL del cliente (ignorada si se establece sslpasswordcallback) |
negociación ssl | Cadena | postgres | Determina si se utilizará o no la negociación SSL de ALPN. Configure para direct para elegir ALPN. |
enviarTamaño del búfer | Entero | -1 | Tamaño del búfer de escritura del socket |
maxSendBufferSize | Entero | 65536 | Cantidad máxima de bytes almacenados en búfer antes de enviarlos al backend. pgjdbc usa least(maxSendBufferSize, greatest(8192, SO_SNDBUF)) para determinar el tamaño del búfer. |
recibirTamaño del búfer | Entero | -1 | Tamaño del búfer de lectura del socket |
logServerErrorDetalle | Booleano | verdadero | Permite que los detalles de los errores del servidor (como declaraciones y valores SQL) se registren y se transmitan en excepciones. Configurarlo como falso enmascarará estos errores para que no queden expuestos a los usuarios ni a los registros. |
permitir cambios de codificación | Booleano | FALSO | Permitir cambios en client_encoding |
logConexiones no cerradas | Booleano | FALSO | Cuando las conexiones que no están cerradas explícitamente se recolectan como basura, registre el seguimiento de la pila desde la apertura de la conexión para rastrear la fuente de la fuga. |
transferencia binaria | Booleano | verdadero | Habilite la transferencia binaria para los tipos integrados admitidos si es posible. Establecer esto en false deshabilita cualquier transferencia binaria a menos que se active individualmente para cada tipo con binaryTransferEnable . La posibilidad de utilizar la transferencia binaria depende de las declaraciones preparadas del lado del servidor (consulte prepareThreshold ). |
binarioTransferEnable | Cadena | "" | Lista de tipos separados por comas para habilitar la transferencia binaria. Ya sea números OID o nombres. |
transferencia binariaDesactivar | Cadena | "" | Lista de tipos separados por comas para deshabilitar la transferencia binaria. Ya sea números OID o nombres. Anula los valores en el conjunto predeterminado del controlador y los valores establecidos con binarioTransferEnable. |
prepararumbral | Entero | 5 | Determine la cantidad de ejecuciones PreparedStatement necesarias antes de cambiar para utilizar declaraciones preparadas del lado del servidor. El valor predeterminado es cinco, lo que significa comenzar a utilizar declaraciones preparadas del lado del servidor en la quinta ejecución del mismo objeto PreparedStatement . Un valor de -1 activa las declaraciones preparadas del lado del servidor y fuerza la transferencia binaria para los tipos habilitados (consulte binaryTransfer ). |
preparadoStatementCacheQueries | Entero | 256 | Especifica el número máximo de entradas en la caché por conexión de declaraciones preparadas. Un valor de 0 deshabilita el caché. |
preparadoStatementCacheSizeMiB | Entero | 5 | Especifica el tamaño máximo (en megabytes) de una caché de declaraciones preparada por conexión. Un valor de 0 deshabilita el caché. |
defaultRowFetchSize | Entero | 0 | Número positivo de filas que se deben recuperar de la base de datos cuando se necesitan más filas para ResultSet en cada iteración de recuperación |
tiempo de espera de inicio de sesión | Entero | 0 | Especifique cuánto tiempo en segundos como máximo (2147484) se debe esperar para que se establezca una conexión a la base de datos. |
tiempo de espera de conexión | Entero | 10 | El valor de tiempo de espera en segundos máximo (2147484) utilizado para las operaciones de conexión de socket. |
tiempo de espera del socket | Entero | 0 | El valor de tiempo de espera en segundos máximo (2147484) utilizado para operaciones de lectura de socket. |
cancelarSignalTimeout | Entero | 10 | El tiempo de espera que se utiliza para enviar el comando de cancelación. |
sslResponseTimeout | Entero | 5000 | Tiempo de espera del socket en milisegundos esperando una respuesta de una solicitud de actualización SSL del servidor. |
tcpMantener vivo | Booleano | FALSO | Habilite o deshabilite el mantenimiento de conexión de TCP. |
tcpSinDelay | Booleano | verdadero | Habilite o deshabilite TCP sin demora. |
Nombre de la aplicación | Cadena | Controlador JDBC de PostgreSQL | El nombre de la aplicación (requiere versión del servidor >= 9.0). Si asumirMinServerVersion está configurado en >= 9.0, esto se enviará en los paquetes de inicio; de lo contrario, después de realizar la conexión. |
sólo lectura | Booleano | FALSO | Pone esta conexión en modo de solo lectura |
modo de solo lectura | Cadena | transacción | Especifica el comportamiento cuando una conexión está configurada para ser de solo lectura, valores posibles: ignorar, transacción, siempre |
desactivarColumnSanitiser | Booleano | FALSO | Habilite la optimización que deshabilita el desinfectante de nombres de columnas |
asumirMinServerVersion | Cadena | nulo | Supongamos que el servidor tiene al menos esa versión. |
esquema actual | Cadena | nulo | Especifique el esquema (o varios esquemas separados por comas) que se establecerán en la ruta de búsqueda |
tipo de servidor de destino | Cadena | cualquier | Especifica qué tipo de servidor conectar, valores posibles: cualquiera, maestro, esclavo (obsoleto), secundario, preferSlave (obsoleto), preferSecondary, preferPrimary |
hostRecheckSeconds | Entero | 10 | Especifica el período (segundos) después del cual se verifica nuevamente el estado del host en caso de que haya cambiado. |
cargaBalanceHosts | Booleano | FALSO | Si los hosts deshabilitados están conectados en el orden indicado. Si los hosts habilitados se eligen aleatoriamente del conjunto de candidatos adecuados |
fábrica de enchufes | Cadena | nulo | Especificar una fábrica de sockets para la creación de sockets |
socketFactoryArg (obsoleto) | Cadena | nulo | Argumento reenviado al constructor de la clase SocketFactory. |
guardado automático | Cadena | nunca | Especifica lo que debe hacer el controlador si falla una consulta, valores posibles: siempre, nunca, conservador |
limpiezaPuntos de guardado | Booleano | FALSO | En el modo de guardado automático, el controlador establece un PUNTO DE GUARDADO para cada consulta. Es posible agotar los buffers compartidos del servidor. Si establece esto en verdadero, se liberará cada PUNTO DE AHORRO al costo de un viaje de ida y vuelta adicional. |
preferirQueryMode | Cadena | extendido | Especifica qué modo se utiliza para ejecutar consultas a la base de datos, valores posibles: extendido, extendidoForPrepared, extendidoCacheTodo, simple |
reescribir inserciones por lotes | Booleano | FALSO | Habilite la optimización para reescribir y contraer declaraciones INSERT compatibles que se realicen por lotes. |
escaparSintaxisCallMode | Cadena | seleccionar | Especifica cómo la sintaxis de llamada de escape JDBC se transforma en SQL subyacente (CALL/SELECT), para invocar procedimientos o funciones (requiere la versión del servidor >= 11), valores posibles: select, callIfNoReturn, call |
maxResultBuffer | Cadena | nulo | Especifica el tamaño del búfer de resultados en bytes, que no se puede exceder durante la lectura del conjunto de resultados. Se puede especificar como un tamaño particular (es decir, "100", "200M", "2G") o como porcentaje de la memoria dinámica máxima (es decir, "10p", "20pct", "50percent") |
gssLib | Cadena | auto | Los valores permitidos son auto (predeterminado, ver más abajo), sspi (forzar SSPI) o gssapi (forzar GSSAPI-JSSE). |
gssResponseTimeout | Entero | 5000 | Tiempo de espera del socket en milisegundos esperando una respuesta de una solicitud de conexión cifrada GSS del servidor. |
gssEncModo | Cadena | permitir | Controla la preferencia para usar el cifrado GSSAPI para la conexión, los valores son deshabilitar, permitir, preferir y requerir. |
utilizarSpnego | Cadena | FALSO | Utilice SPNEGO en solicitudes de autenticación SSPI |
búsqueda adaptativa | Booleano | FALSO | Especifica si el número de filas recuperadas en ResultSet mediante cada iteración de recuperación debe ser dinámico. El número de filas se calculará dividiendo el tamaño de maxResultBuffer por el tamaño de fila máximo observado hasta el momento. Requiere declarar maxResultBuffer y defaultRowFetchSize para la primera iteración. |
adaptativoFetchMinimum | Entero | 0 | Especifica el número mínimo de filas, que pueden calcularse mediante adaptiveFetch. El número de filas utilizadas por adaptiveFetch no puede ser inferior a este valor. |
adaptativoFetchMaximum | Entero | -1 | Especifica el número máximo de filas, que pueden calcularse mediante adaptiveFetch. El número de filas utilizadas por adaptiveFetch no puede superar este valor. AdaptiveFetch utiliza cualquier número negativo establecido como adaptiveFetchMaximum como un número infinito de filas. |
dirección de socket local | Cadena | nulo | Nombre de host o dirección IP proporcionada para configurar explícitamente la interfaz a la que el controlador vinculará el lado del cliente de la conexión TCP/IP al conectarse. |
cotizaciónRegresandoIdentificadores | Booleano | verdadero | De forma predeterminada, utilizamos comillas dobles para los identificadores que regresan. Algunos ORM ya los citan. El interruptor les permite desactivar esto. |
autenticaciónPluginClassName | Cadena | nulo | Nombre de clase completo de la clase que implementa la interfaz AuthenticationPlugin. Si es nulo, se utilizará el valor de la contraseña en las propiedades de la conexión. |
Longitud desconocida | Entero | Entero.MAX_LENGTH | Especifica la longitud a devolver para tipos de longitud desconocida |
tipo de cadena | Cadena | nulo | Especifique el tipo que se utilizará al vincular los parámetros PreparedStatement establecidos mediante setString() |
enlace de canal | Cadena | preferir | Esta opción controla el uso del enlace de canales por parte del cliente. require significa que la conexión debe emplear enlace de canal, prefer significa que el cliente elegirá enlace de canal si está disponible y disable evita el uso de enlace de canal. |
Propiedad | Tipo | Por defecto | Descripción |
---|---|---|---|
pgjdbc.config.cleanup.thread.ttl | largo | 30000 | El controlador tiene un hilo de limpieza interno que monitorea y limpia las conexiones no cerradas. Esta propiedad establece la duración (en milisegundos) que el subproceso de limpieza seguirá ejecutándose si no hay nada que limpiar. |
Para obtener información sobre cómo contribuir al proyecto, consulte las Pautas de contribución.