O driver JDBC PostgreSQL (abreviado PgJDBC) permite que programas Java se conectem a um banco de dados PostgreSQL usando código Java padrão independente de banco de dados. É um driver JDBC de código aberto escrito em Pure Java (Tipo 4) e se comunica no protocolo de rede nativo PostgreSQL.
A versão atual do driver deve ser compatível com PostgreSQL 8.4 e superior usando a versão 3.0 do protocolo e Java 8 (JDBC 4.2) ou superior. A menos que você tenha requisitos incomuns (executando aplicativos antigos ou JVMs), este é o driver que você deve usar.
Os testes de regressão PgJDBC são executados em todas as versões do PostgreSQL desde 9.1, incluindo a versão "construir PostgreSQL a partir do git master". Existem outros forks derivados do PostgreSQL, mas eles não foram certificados para rodar com PgJDBC. Se você encontrar um bug ou regressão nas versões suportadas, registre um problema.
Nota: Não é garantido que versões do PgJDBC desde 42.8.0 funcionem com PostgreSQL anteriores a 9.1.
A maioria das pessoas não precisa compilar o PgJDBC. Você pode baixar o driver pré-compilado (jar) do site PostgreSQL JDBC ou usando a ferramenta de gerenciamento de dependências de sua escolha:
Você pode pesquisar no Repositório Central com GroupId e 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 >
As compilações de instantâneos (compilações do branch master
) também são implantadas no OSS Sonatype Snapshot Repository, para que você possa testar a versão de desenvolvimento atual (testar alguma correção de bug) habilitando o repositório e usando a versão mais recente do SNAPSHOT.
Também existem RPMs binários disponíveis (instantâneos) no repositório Copr do Fedora.
Para obter mais informações, você pode ler a documentação do driver PgJDBC ou para documentação geral do JDBC, consulte Os Tutoriais Java™.
Implementos | Aula |
---|---|
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 |
O driver reconhece URLs JDBC no 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
O formato geral de uma URL JDBC para conexão com um servidor PostgreSQL é o seguinte, com itens entre colchetes ([ ]) sendo opcionais:
jdbc:postgresql:[//host[:port]/][database][?property1=value1[&property2=value2]...]
onde:
localhost
.5432
. PgJDBC usa java.util.logging para registro. Para configurar os níveis de log e controlar o destino de saída do log (por exemplo, arquivo ou console), configure suas propriedades java.util.logging adequadamente para o criador de logs org.postgresql. Observe que os níveis de log mais detalhados, " FINEST
", podem incluir informações confidenciais, como detalhes de conexão, consulta SQL ou parâmetros de comando.
Além dos parâmetros de conexão padrão, o driver suporta diversas propriedades adicionais que podem ser usadas para especificar o comportamento adicional do driver específico para PostgreSQL™. Essas propriedades podem ser especificadas na URL de conexão ou em um parâmetro de objeto Properties adicional para DriverManager.getConnection.
Propriedade | Tipo | Padrão | Descrição |
---|---|---|---|
usuário | Corda | nulo | O usuário do banco de dados em nome do qual a conexão está sendo feita. |
senha | Corda | nulo | A senha do usuário do banco de dados. |
opções | Corda | nulo | Especifique o parâmetro de inicialização da conexão 'opções'. |
serviço | Corda | nulo | Especifique o nome do 'serviço' descrito no arquivo pg_service.conf. Referências: O arquivo do serviço de conexão e o arquivo de senha. O arquivo 'service' pode fornecer todas as propriedades, incluindo 'hostname=', 'port=' e 'dbname='. |
SSL | Booleano | falso | Controlar o uso de SSL (o valor verdadeiro faz com que o SSL seja obrigatório) |
fábrica | Corda | org.postgresql.ssl.LibPQFactory | Forneça uma classe SSLSocketFactory ao usar SSL. |
sslfactoryarg (descontinuado) | Corda | nulo | Argumento encaminhado para o construtor da classe SSLSocketFactory. |
modo SSL | Corda | prefiro | Controla a preferência de abertura usando uma conexão criptografada SSL. |
certificado SSL | Corda | nulo | A localização do certificado SSL do cliente |
chave SSL | Corda | nulo | A localização da chave SSL PKCS#8 ou PKCS#12 do cliente, para PKCS a extensão deve ser .p12 ou .pfx e o alias deve ser user |
sslrootcert | Corda | nulo | A localização do certificado raiz para autenticar o servidor. |
sslhoshostnameverifier | Corda | nulo | O nome de uma classe (para uso em Class.forName(String)) que implementa javax.net.ssl.HostnameVerifier e pode verificar o nome do host do servidor. |
sslpasswordcallback | Corda | nulo | O nome de uma classe (para uso em Class.forName(String)) que implementa javax.security.auth.callback.CallbackHandler e pode manipular PasswordCallback para a senha SSL. |
senha SSL | Corda | nulo | A senha da chave SSL do cliente (ignorada se sslpasswordcallback estiver definido) |
negociação SSL | Corda | postgres | Determina se a negociação SSL ALPN será usada ou não. Defina como direct para escolher ALPN. |
enviarBufferSize | Inteiro | -1 | Tamanho do buffer de gravação do soquete |
maxSendBufferSize | Inteiro | 65536 | Quantidade máxima de bytes armazenados em buffer antes de enviar para o back-end. pgjdbc usa least(maxSendBufferSize, greatest(8192, SO_SNDBUF)) para determinar o tamanho do buffer. |
receberBufferSize | Inteiro | -1 | Tamanho do buffer de leitura do soquete |
logServerErrorDetail | Booleano | verdadeiro | Permite que detalhes de erros do servidor (como instruções e valores SQL) sejam registrados e transmitidos em exceções. Definir como false mascarará esses erros para que não sejam expostos aos usuários ou aos logs. |
permitirEncodingChanges | Booleano | falso | Permitir alterações em client_encoding |
logUnclosedConnections | Booleano | falso | Quando conexões que não estão explicitamente fechadas são coletadas como lixo, registre o stacktrace desde a abertura da conexão para rastrear a origem do vazamento |
transferência binária | Booleano | verdadeiro | Habilite a transferência binária para tipos integrados suportados, se possível. Definir isso como false desativa qualquer transferência binária, a menos que seja ativada individualmente para cada tipo com binaryTransferEnable . Se é possível usar a transferência binária depende das instruções preparadas no lado do servidor (consulte prepareThreshold ). |
binárioTransferEnable | Corda | "" | Lista separada por vírgulas de tipos para permitir a transferência binária. Números ou nomes OID. |
binárioTransferDisable | Corda | "" | Lista separada por vírgulas de tipos para desabilitar a transferência binária. Números ou nomes OID. Substitui valores no conjunto padrão do driver e valores definidos com binaryTransferEnable. |
prepararLimite | Inteiro | 5 | Determine o número de execuções PreparedStatement necessárias antes de mudar para usar instruções preparadas no lado do servidor. O padrão é cinco, o que significa começar a usar instruções preparadas no lado do servidor na quinta execução do mesmo objeto PreparedStatement . Um valor -1 ativa instruções preparadas no lado do servidor e força a transferência binária para tipos habilitados (consulte binaryTransfer ). |
preparadoStatementCacheQueries | Inteiro | 256 | Especifica o número máximo de entradas no cache por conexão de instruções preparadas. Um valor 0 desativa o cache. |
preparadoStatementCacheSizeMiB | Inteiro | 5 | Especifica o tamanho máximo (em megabytes) de um cache de instruções preparadas por conexão. Um valor 0 desativa o cache. |
padrãoRowFetchSize | Inteiro | 0 | Número positivo de linhas que devem ser buscadas no banco de dados quando mais linhas são necessárias para ResultSet a cada iteração de busca |
loginTimeout | Inteiro | 0 | Especifique quanto tempo em segundos no máximo (2147484) aguardar o estabelecimento de uma conexão com o banco de dados. |
conectarTimeout | Inteiro | 10 | O valor de tempo limite em segundos no máximo (2147484) usado para operações de conexão de soquete. |
soqueteTimeout | Inteiro | 0 | O valor de tempo limite em segundos no máximo (2147484) usado para operações de leitura de soquete. |
cancelarSignalTimeout | Inteiro | 10 | O tempo limite usado para enviar o comando de cancelamento. |
sslResponseTimeout | Inteiro | 5.000 | Tempo limite do soquete em milissegundos aguardando uma resposta de uma solicitação de atualização SSL do servidor. |
tcpKeepAlive | Booleano | falso | Habilite ou desabilite o keep-alive do TCP. |
tcpNoDelay | Booleano | verdadeiro | Habilite ou desabilite o TCP sem atraso. |
Nome do aplicativo | Corda | Driver PostgreSQL JDBC | O nome do aplicativo (requer versão do servidor >= 9.0). Se assumeMinServerVersion estiver definido como >= 9.0, isso será enviado nos pacotes de inicialização, caso contrário, após a conexão ser feita |
somente leitura | Booleano | falso | Coloca esta conexão em modo somente leitura |
modo somente leitura | Corda | transação | Especifica o comportamento quando uma conexão é definida como somente leitura, valores possíveis: ignorar, transação, sempre |
desativarColumnSanitiser | Booleano | falso | Ativar otimização que desativa o higienizador de nome de coluna |
assumeMinServerVersion | Corda | nulo | Suponha que o servidor seja pelo menos essa versão |
esquema atual | Corda | nulo | Especifique o esquema (ou vários esquemas separados por vírgulas) a ser definido no caminho de pesquisa |
targetServerType | Corda | qualquer | Especifica que tipo de servidor conectar, valores possíveis: any, master, slave (obsoleto), secundário, preferSlave (obsoleto), preferSecondary, preferPrimary |
hostRecheckSeconds | Inteiro | 10 | Especifica o período (segundos) após o qual o status do host é verificado novamente caso tenha mudado |
loadBalanceHosts | Booleano | falso | Se os hosts desativados estiverem conectados na ordem especificada. Se os hosts habilitados forem escolhidos aleatoriamente no conjunto de candidatos adequados |
soqueteFactory | Corda | nulo | Especifique uma fábrica de soquetes para criação de soquetes |
socketFactoryArg (descontinuado) | Corda | nulo | Argumento encaminhado ao construtor da classe SocketFactory. |
salvamento automático | Corda | nunca | Especifica o que o driver deve fazer se uma consulta falhar, valores possíveis: sempre, nunca, conservador |
limpezaSavepoints | Booleano | falso | No modo Autosave o driver define um SAVEPOINT para cada consulta. É possível esgotar os buffers compartilhados do servidor. Definir isso como verdadeiro liberará cada SAVEPOINT ao custo de uma viagem de ida e volta adicional. |
preferirQueryMode | Corda | estendido | Especifica qual modo é usado para executar consultas ao banco de dados, valores possíveis: estendido, estendidoForPrepared, estendidoCacheEverything, simples |
reWriteBatchedInserts | Booleano | falso | Habilite a otimização para reescrever e recolher instruções INSERT compatíveis em lote. |
escapeSyntaxCallMode | Corda | selecione | Especifica como a sintaxe da chamada de escape JDBC é transformada em SQL subjacente (CALL/SELECT), para invocar procedimentos ou funções (requer versão do servidor >= 11), valores possíveis: select, callIfNoReturn, call |
maxResultBuffer | Corda | nulo | Especifica o tamanho do buffer de resultados em bytes, que não pode ser excedido durante a leitura do conjunto de resultados. Pode ser especificado como tamanho específico (ou seja, "100", "200M" "2G") ou como porcentagem da memória heap máxima (ou seja, "10p", "20pct", "50percent") |
gssLib | Corda | auto | Os valores permitidos são auto (padrão, veja abaixo), sspi (forçar SSPI) ou gssapi (forçar GSSAPI-JSSE). |
gssResponseTimeout | Inteiro | 5.000 | Tempo limite do soquete em milissegundos aguardando uma resposta de uma solicitação de conexão criptografada GSS do servidor. |
gssEncMode | Corda | permitir | Controla a preferência de uso de criptografia GSSAPI para a conexão, os valores são desabilitar, permitir, preferir e exigir |
usarSpnego | Corda | falso | Use SPNEGO em solicitações de autenticação SSPI |
adaptávelFetch | Booleano | falso | Especifica se o número de linhas buscadas em ResultSet por cada iteração de busca deve ser dinâmico. O número de linhas será calculado dividindo o tamanho de maxResultBuffer pelo tamanho máximo de linha observado até agora. Requer a declaração de maxResultBuffer e defaultRowFetchSize para a primeira iteração. |
adaptativoFetchMinimum | Inteiro | 0 | Especifica o número mínimo de linhas, que pode ser calculado por adaptiveFetch. O número de linhas usadas por adaptiveFetch não pode ficar abaixo desse valor. |
adaptativoFetchMaximum | Inteiro | -1 | Especifica o número máximo de linhas, que pode ser calculado por adaptiveFetch. O número de linhas usadas por adaptiveFetch não pode ultrapassar esse valor. Qualquer número negativo definido como adaptiveFetchMaximum é usado por adaptiveFetch como um número infinito de linhas. |
localSocketAddress | Corda | nulo | Nome do host ou endereço IP fornecido para configurar explicitamente a interface à qual o driver vinculará o lado do cliente da conexão TCP/IP durante a conexão. |
quoteReturningIdentifiers | Booleano | verdadeiro | Por padrão, colocamos aspas duplas nos identificadores de retorno. Alguns ORM já os citam. Switch permite que eles desliguem isso |
autenticaçãoPluginClassName | Corda | nulo | Nome de classe totalmente qualificado da classe que implementa a interface AuthenticationPlugin. Se for nulo, o valor da senha nas propriedades da conexão será usado. |
comprimento desconhecido | Inteiro | Inteiro.MAX_LENGTH | Especifica o comprimento a ser retornado para tipos de comprimento desconhecido |
tipo de string | Corda | nulo | Especifique o tipo a ser usado ao vincular os parâmetros PreparedStatement definidos via setString() |
ligação de canal | Corda | prefiro | Esta opção controla o uso de ligação de canal pelo cliente. require significa que a conexão deve empregar ligação de canal, prefer significa que o cliente escolherá a ligação de canal, se disponível, e disable impede o uso de ligação de canal. |
Propriedade | Tipo | Padrão | Descrição |
---|---|---|---|
pgjdbc.config.cleanup.thread.ttl | longo | 30.000 | O driver possui um thread de limpeza interno que monitora e limpa conexões não fechadas. Esta propriedade define a duração (em milissegundos) que o thread de limpeza continuará em execução se não houver nada para limpar. |
Para obter informações sobre como contribuir para o projeto, consulte as Diretrizes de Contribuição