PostgreSQL JDBC 드라이버(줄여서 PgJDBC)를 사용하면 Java 프로그램이 데이터베이스 독립적인 표준 Java 코드를 사용하여 PostgreSQL 데이터베이스에 연결할 수 있습니다. Pure Java(Type 4)로 작성된 오픈 소스 JDBC 드라이버이며 PostgreSQL 기본 네트워크 프로토콜로 통신합니다.
현재 버전의 드라이버는 프로토콜 버전 3.0 및 Java 8 (JDBC 4.2) 이상을 사용하여 PostgreSQL 8.4 이상 과 호환되어야 합니다. 특별한 요구 사항(이전 응용 프로그램 또는 JVM 실행)이 없는 한 이 드라이버를 사용해야 합니다.
PgJDBC 회귀 테스트는 "git master에서 PostgreSQL 빌드" 버전을 포함하여 9.1 이후의 모든 PostgreSQL 버전에 대해 실행됩니다. PostgreSQL의 다른 파생 포크가 있지만 PgJDBC와 함께 실행되도록 인증되지 않았습니다. 지원되는 버전에서 버그나 회귀를 발견하면 문제를 제출해 주세요.
참고: 42.8.0 이후의 PgJDBC 버전은 9.1 이전의 PostgreSQL과의 작동이 보장되지 않습니다.
대부분의 사람들은 PgJDBC를 컴파일할 필요가 없습니다. PostgreSQL JDBC 사이트에서 또는 선택한 종속성 관리 도구를 사용하여 미리 컴파일된 드라이버(jar)를 다운로드할 수 있습니다.
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 Repository에 배포되므로 저장소를 활성화하고 최신 SNAPSHOT 버전을 사용하여 현재 개발 버전을 테스트(일부 버그 수정 테스트)할 수 있습니다.
Fedora의 Copr 저장소에는 사용 가능한 (스냅샷) 바이너리 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 |
드라이버는 다음 형식의 JDBC URL을 인식합니다.
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
PostgreSQL 서버에 연결하기 위한 JDBC URL의 일반적인 형식은 다음과 같습니다. 대괄호([ ]) 안의 항목은 선택 사항입니다.
jdbc:postgresql:[//host[:port]/][database][?property1=value1[&property2=value2]...]
어디:
localhost
입니다.5432
입니다. PgJDBC는 로깅을 위해 java.util.logging을 사용합니다. 로그 수준을 구성하고 로그 출력 대상(예: 파일 또는 콘솔)을 제어하려면 org.postgresql 로거에 맞게 java.util.logging 속성을 구성하세요. 가장 자세한 로그 수준인 " FINEST
"에는 연결 세부 정보, 쿼리 SQL 또는 명령 매개 변수와 같은 중요한 정보가 포함될 수 있습니다.
표준 연결 매개변수 외에도 드라이버는 PostgreSQL™에 특정한 추가 드라이버 동작을 지정하는 데 사용할 수 있는 여러 추가 속성을 지원합니다. 이러한 속성은 연결 URL이나 DriverManager.getConnection에 대한 추가 속성 개체 매개 변수에 지정될 수 있습니다.
재산 | 유형 | 기본 | 설명 |
---|---|---|---|
사용자 | 끈 | null | 대신 연결을 수행하는 데이터베이스 사용자입니다. |
비밀번호 | 끈 | null | 데이터베이스 사용자의 비밀번호입니다. |
옵션 | 끈 | null | '옵션' 연결 초기화 매개변수를 지정합니다. |
서비스 | 끈 | null | pg_service.conf 파일에 설명된 '서비스' 이름을 지정합니다. 참고 자료: 연결 서비스 파일 및 비밀번호 파일. 'service' 파일은 'hostname=', 'port=', 'dbname='을 포함한 모든 속성을 제공할 수 있습니다. |
SSL | 부울 | 거짓 | SSL 사용 제어(true 값을 사용하면 SSL이 필요함) |
공장 | 끈 | org.postgresql.ssl.LibPQFactory | SSL을 사용할 때 SSLSocketFactory 클래스를 제공하십시오. |
sslfactoryarg(더 이상 사용되지 않음) | 끈 | null | SSLSocketFactory 클래스의 생성자로 전달되는 인수입니다. |
SSL모드 | 끈 | 선호하다 | SSL 암호화 연결을 사용하여 열기에 대한 기본 설정을 제어합니다. |
SSL인증서 | 끈 | null | 클라이언트의 SSL 인증서 위치 |
SSL키 | 끈 | null | 클라이언트의 PKCS#8 또는 PKCS#12 SSL 키 위치입니다. PKCS의 경우 확장자는 .p12 또는 .pfx여야 하고 별칭은 user 여야 합니다. |
SSL루트인증서 | 끈 | null | 서버 인증을 위한 루트 인증서의 위치입니다. |
sslhostnameverifier | 끈 | null | javax.net.ssl.HostnameVerifier를 구현하고 서버 호스트 이름을 확인할 수 있는 클래스 이름(Class.forName(String)에서 사용)입니다. |
SSL비밀번호콜백 | 끈 | null | javax.security.auth.callback.CallbackHandler를 구현하고 SSL 비밀번호에 대한 PasswordCallback을 처리할 수 있는 클래스 이름(Class.forName(String)에서 사용)입니다. |
SSL비밀번호 | 끈 | null | 클라이언트 SSL 키의 비밀번호(sslpasswordcallback이 설정된 경우 무시됨) |
SSL협상 | 끈 | 포스트그레스 | ALPN SSL 협상을 사용할지 여부를 결정합니다. ALPN을 선택하려면 direct 로 설정하세요. |
sendBufferSize | 정수 | -1 | 소켓 쓰기 버퍼 크기 |
maxSendBufferSize | 정수 | 65536 | 백엔드로 보내기 전에 버퍼링되는 최대 바이트 양입니다. pgjdbc는 버퍼 크기를 결정하기 위해 least(maxSendBufferSize, greatest(8192, SO_SNDBUF)) 사용합니다. |
수신 버퍼 크기 | 정수 | -1 | 소켓 읽기 버퍼 크기 |
logServerErrorDetail | 부울 | 진실 | 서버 오류 세부 정보(예: SQL 문 및 값)를 기록하고 예외로 전달할 수 있습니다. false로 설정하면 이러한 오류가 가려져 사용자나 로그에 노출되지 않습니다. |
허용EncodingChanges | 부울 | 거짓 | client_encoding 변경 허용 |
logUnclosedConnections | 부울 | 거짓 | 명시적으로 닫히지 않은 연결을 가비지 수집하는 경우 연결이 열린 시점부터 스택 추적을 기록하여 누출 원인을 추적합니다. |
바이너리 전송 | 부울 | 진실 | 가능한 경우 지원되는 내장 유형에 대해 바이너리 전송을 활성화합니다. 이를 false로 설정하면 binaryTransferEnable 사용하여 각 유형에 대해 개별적으로 활성화되지 않는 한 모든 바이너리 전송이 비활성화됩니다. 바이너리 전송을 사용할 수 있는지 여부는 서버 측 준비된 문에 따라 다릅니다( prepareThreshold 참조). |
바이너리 전송 활성화 | 끈 | "" | 바이너리 전송을 활성화하기 위한 쉼표로 구분된 유형 목록입니다. OID 번호 또는 이름입니다. |
바이너리 전송 비활성화 | 끈 | "" | 바이너리 전송을 비활성화하는 쉼표로 구분된 유형 목록입니다. OID 번호 또는 이름입니다. 드라이버 기본 세트의 값과 BinaryTransferEnable로 설정된 값을 재정의합니다. |
준비임계값 | 정수 | 5 | 서버 측 준비된 문을 사용하도록 전환하기 전에 필요한 PreparedStatement 실행 수를 결정합니다. 기본값은 5입니다. 즉, 동일한 PreparedStatement 객체를 다섯 번째로 실행할 때 서버측 준비된 문을 사용하기 시작한다는 의미입니다. -1 값은 서버 측 준비된 문을 활성화하고 활성화된 유형에 대해 바이너리 전송을 강제합니다( binaryTransfer 참조). |
prepareStatementCache쿼리 | 정수 | 256 | 준비된 문의 연결별 캐시에 있는 최대 항목 수를 지정합니다. 값이 0이면 캐시가 비활성화됩니다. |
prepareStatementCacheSizeMiB | 정수 | 5 | 연결당 준비된 명령문 캐시의 최대 크기(MB)를 지정합니다. 값이 0이면 캐시가 비활성화됩니다. |
defaultRowFetchSize | 정수 | 0 | 각 페치 반복으로 ResultSet에 더 많은 행이 필요할 때 데이터베이스에서 페치해야 하는 행의 양수입니다. |
로그인 시간 초과 | 정수 | 0 | 데이터베이스 연결 설정을 기다리는 최대 시간(2147484)을 초 단위로 지정합니다. |
연결시간 초과 | 정수 | 10 | 소켓 연결 작업에 사용되는 최대 시간 초과 값(초)은 2147484입니다. |
소켓시간 초과 | 정수 | 0 | 소켓 읽기 작업에 사용되는 최대 시간 초과 값(초)(2147484)입니다. |
취소신호시간 초과 | 정수 | 10 | 취소 명령을 보내는 데 사용되는 시간 초과입니다. |
SSL응답시간 초과 | 정수 | 5000 | 서버의 SSL 업그레이드 요청에 대한 응답을 기다리는 소켓 시간 초과(밀리초)입니다. |
tcpKeepAlive | 부울 | 거짓 | TCP 연결 유지를 활성화하거나 비활성화합니다. |
tcpNoDelay | 부울 | 진실 | TCP 지연 없음을 활성화하거나 비활성화합니다. |
애플리케이션 이름 | 끈 | PostgreSQL JDBC 드라이버 | 애플리케이션 이름(서버 버전 >= 9.0 필요) submitMinServerVersion이 9.0 이상으로 설정된 경우 이는 시작 패킷에 포함되어 전송되고, 그렇지 않은 경우 연결이 이루어진 후 전송됩니다. |
읽기 전용 | 부울 | 거짓 | 이 연결을 읽기 전용 모드로 전환합니다. |
읽기 전용 모드 | 끈 | 거래 | 연결이 읽기 전용으로 설정된 경우 동작을 지정합니다. 가능한 값은 무시, 트랜잭션, 항상입니다. |
비활성화칼럼 소독기 | 부울 | 거짓 | 열 이름 삭제 프로그램을 비활성화하는 최적화 활성화 |
MinServerVersion 가정 | 끈 | null | 서버가 최소한 해당 버전이라고 가정합니다. |
현재 스키마 | 끈 | null | 검색 경로에 설정할 스키마(또는 쉼표로 구분된 여러 스키마)를 지정하세요. |
대상 서버 유형 | 끈 | 어느 | 연결할 서버 종류를 지정합니다. 가능한 값: any, master,slave(더 이상 사용되지 않음), second, PreferSlave(더 이상 사용되지 않음), PreSecondary, PreferPrimary |
호스트재확인초 | 정수 | 10 | 호스트 상태가 변경된 경우 호스트 상태를 다시 확인하는 기간(초)을 지정합니다. |
loadBalance호스트 | 부울 | 거짓 | 비활성화된 경우 호스트는 지정된 순서대로 연결됩니다. 활성화된 호스트가 적합한 후보 집합에서 무작위로 선택되는 경우 |
소켓공장 | 끈 | null | 소켓 생성을 위한 소켓 팩토리 지정 |
SocketFactoryArg(더 이상 사용되지 않음) | 끈 | null | SocketFactory 클래스의 생성자로 전달되는 인수입니다. |
자동 저장 | 끈 | 절대 | 쿼리가 실패할 경우 드라이버가 수행해야 하는 작업을 지정합니다. 가능한 값은 항상, 절대, 보수적입니다. |
정리저장점 | 부울 | 거짓 | 자동 저장 모드에서 드라이버는 모든 쿼리에 대해 SAVEPOINT를 설정합니다. 서버 공유 버퍼가 소진될 수 있습니다. 이를 true로 설정하면 추가 왕복 비용으로 각 SAVEPOINT가 해제됩니다. |
선호쿼리모드 | 끈 | 펼친 | 데이터베이스에 대한 쿼리를 실행하는 데 사용되는 모드를 지정합니다. 가능한 값은 확장, 확장 ForPrepared, 확장 CacheEverything, 단순입니다. |
다시 쓰기일괄 삽입 | 부울 | 거짓 | 일괄 처리되는 호환 가능한 INSERT 문을 다시 작성하고 축소하려면 최적화를 활성화하세요. |
escapeSyntaxCallMode | 끈 | 선택하다 | 프로시저 또는 함수(서버 버전 >= 11 필요)를 호출하기 위해 JDBC 이스케이프 호출 구문이 기본 SQL(CALL/SELECT)로 변환되는 방법을 지정합니다. 가능한 값: select, callIfNoReturn, call |
maxResultBuffer | 끈 | null | 결과 집합을 읽는 동안 초과할 수 없는 결과 버퍼의 크기를 바이트 단위로 지정합니다. 특정 크기(예: "100", "200M" "2G") 또는 최대 힙 메모리의 백분율(예: "10p", "20pct", "50%")로 지정할 수 있습니다. |
gssLib | 끈 | 자동 | 허용되는 값은 auto(기본값, 아래 참조), sspi(SSPI 강제) 또는 gssapi(GSSAPI-JSSE 강제)입니다. |
gss응답시간 초과 | 정수 | 5000 | 서버의 GSS 암호화 연결 요청에 대한 응답을 기다리는 소켓 시간 초과(밀리초)입니다. |
gssEncMode | 끈 | 허용하다 | 연결에 GSSAPI 암호화를 사용하기 위한 기본 설정을 제어합니다. 값은 비활성화, 허용, 선호 및 요구입니다. |
사용Spnego | 끈 | 거짓 | SSPI 인증 요청에 SPNEGO 사용 |
적응형 가져오기 | 부울 | 거짓 | 각 페치 반복으로 ResultSet에서 페치된 행 수가 동적이어야 하는지 여부를 지정합니다. 행 수는 maxResultBuffer 크기를 지금까지 관찰된 최대 행 크기로 나누어 계산됩니다. 첫 번째 반복에서는 maxResultBuffer 및 defaultRowFetchSize를 선언해야 합니다. |
적응형가져오기최소 | 정수 | 0 | AdaptiveFetch로 계산할 수 있는 최소 행 수를 지정합니다. AdaptiveFetch에서 사용하는 행 수는 이 값보다 작을 수 없습니다. |
적응형FetchMaximum | 정수 | -1 | AdaptiveFetch로 계산할 수 있는 최대 행 수를 지정합니다. AdaptiveFetch에서 사용하는 행 수는 이 값을 초과할 수 없습니다. AdaptiveFetchMaximum으로 설정된 음수는 AdaptiveFetch에서 무한대의 행으로 사용됩니다. |
localSocket주소 | 끈 | null | 연결할 때 드라이버가 TCP/IP 연결의 클라이언트 측을 바인딩할 인터페이스를 명시적으로 구성하기 위해 제공되는 호스트 이름 또는 IP 주소입니다. |
quoteReturningIdentifiers | 부울 | 진실 | 기본적으로 반환 식별자를 큰따옴표로 묶습니다. 일부 ORM은 이미 이를 인용하고 있습니다. 스위치를 사용하면 이 기능을 끌 수 있습니다 |
인증플러그인클래스이름 | 끈 | null | AuthenticationPlugin 인터페이스를 구현하는 클래스의 정규화된 클래스 이름입니다. null인 경우 연결 속성의 비밀번호 값이 사용됩니다. |
알 수 없는 길이 | 정수 | 정수.MAX_LENGTH | 알 수 없는 길이 유형에 대해 반환할 길이를 지정합니다. |
문자열 유형 | 끈 | null | setString() 통해 설정된 PreparedStatement 매개변수를 바인딩할 때 사용할 유형을 지정합니다. |
채널바인딩 | 끈 | 선호하다 | 이 옵션은 클라이언트의 채널 바인딩 사용을 제어합니다. require 연결이 채널 바인딩을 사용해야 함을 의미하고, prefer 클라이언트가 사용 가능한 경우 채널 바인딩을 선택함을 의미하며, disable 채널 바인딩 사용을 방지함을 의미합니다. |
재산 | 유형 | 기본 | 설명 |
---|---|---|---|
pgjdbc.config.cleanup.thread.ttl | 긴 | 30000 | 드라이버에는 닫히지 않은 연결을 모니터링하고 정리하는 내부 정리 스레드가 있습니다. 이 속성은 정리할 항목이 없을 경우 정리 스레드가 계속 실행되는 기간(밀리초)을 설정합니다. |
프로젝트에 기여하는 방법에 대한 정보는 기여 지침을 참조하세요.