PostgreSQL JDBC ドライバー (略して PgJDBC) を使用すると、Java プログラムが標準のデータベースに依存しない Java コードを使用して PostgreSQL データベースに接続できるようになります。 Pure Java (Type 4) で書かれたオープン ソース JDBC ドライバーであり、PostgreSQL ネイティブ ネットワーク プロトコルで通信します。
ドライバーの現在のバージョンは、プロトコルのバージョン 3.0 を使用するPostgreSQL 8.4以降およびJava 8 (JDBC 4.2) 以降と互換性がある必要があります。特殊な要件 (古いアプリケーションまたは JVM の実行) がない限り、これが使用すべきドライバーです。
PgJDBC 回帰テストは、「git master から PostgreSQL をビルド」バージョンを含む、9.1 以降のすべての PostgreSQL バージョンに対して実行されます。 PostgreSQL の派生フォークは他にもありますが、それらは PgJDBC での実行が認定されていません。サポートされているバージョンでバグやリグレッションを見つけた場合は、問題を報告してください。
注: 42.8.0 以降の PgJDBC バージョンは、9.1 より古い PostgreSQL で動作することは保証されていません。
ほとんどの人は PgJDBC をコンパイルする必要はありません。プリコンパイル済みドライバー (jar) は、PostgreSQL JDBC サイトから、または選択した依存関係管理ツールを使用してダウンロードできます。
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 バージョンを使用することで、現在の開発バージョンをテスト (いくつかのバグ修正をテスト) できます。
Fedora の Copr リポジトリには、利用可能な (スナップショット) バイナリ RPM もあります。
詳細については、PgJDBC ドライバーのドキュメントを参照するか、一般的な JDBC ドキュメントについては、「Java™ チュートリアル」を参照してください。
器具 | クラス |
---|---|
java.sql.ドライバー | org.postgresql.ドライバー |
javax.sql.DataSource | 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 への追加の Properties オブジェクト パラメータのいずれかで指定できます。
財産 | タイプ | デフォルト | 説明 |
---|---|---|---|
ユーザー | 弦 | ヌル | 接続が確立されるデータベース ユーザー。 |
パスワード | 弦 | ヌル | データベースユーザーのパスワード。 |
オプション | 弦 | ヌル | 「オプション」接続初期化パラメータを指定します。 |
サービス | 弦 | ヌル | pg_service.confファイルに記述されている「サービス」名を指定します。参照: 接続サービス ファイルとパスワード ファイル。 「service」ファイルは、「hostname=」、「port=」、「dbname=」を含むすべてのプロパティを提供できます。 |
SSL | ブール値 | 間違い | SSL の使用を制御します (true 値では SSL が必要になります) |
ssfactory | 弦 | org.postgresql.ssl.LibPQFactory | SSLを使用する場合はSSLSocketFactoryクラスを提供します。 |
sslfactoryarg (非推奨) | 弦 | ヌル | SSLSocketFactory クラスのコンストラクターに転送される引数。 |
SSLモード | 弦 | 好む | SSL 暗号化接続を使用して開く設定を制御します。 |
sslcert | 弦 | ヌル | クライアントのSSL証明書の場所 |
sslkey | 弦 | ヌル | クライアントの PKCS#8 または PKCS#12 SSL キーの場所。PKCS の場合、拡張子は .p12 または .pfx、エイリアスはuser である必要があります。 |
sslrootcert | 弦 | ヌル | サーバーを認証するためのルート証明書の場所。 |
sslhostnameverifier | 弦 | ヌル | javax.net.ssl.HostnameVerifier を実装し、サーバーのホスト名を検証できるクラスの名前 (Class.forName(String) で使用)。 |
sslパスワードコールバック | 弦 | ヌル | javax.security.auth.callback.CallbackHandler を実装し、SSL パスワードの PasswordCallback を処理できるクラスの名前 (Class.forName(String) で使用)。 |
sslパスワード | 弦 | ヌル | クライアントのSSLキーのパスワード(sslpasswordcallbackが設定されている場合は無視されます) |
sslネゴシエーション | 弦 | ポストグレ | ALPN ssl ネゴシエーションを使用するかどうかを決定します。 ALPNを選択するにはdirect に設定します。 |
送信バッファサイズ | 整数 | -1 | ソケット書き込みバッファサイズ |
maxSendBufferSize | 整数 | 65536 | バックエンドに送信する前にバッファリングされる最大バイト数。 pgjdbc はleast(maxSendBufferSize, greatest(8192, SO_SNDBUF)) 使用してバッファ サイズを決定します。 |
受信バッファサイズ | 整数 | -1 | ソケット読み取りバッファーサイズ |
ログサーバーエラーの詳細 | ブール値 | 真実 | サーバー エラーの詳細 (SQL ステートメントや値など) をログに記録し、例外として渡すことができます。 false に設定すると、これらのエラーがマスクされ、ユーザーやログに公開されなくなります。 |
エンコーディング変更を許可する | ブール値 | 間違い | client_encoding の変更を許可する |
ログ未終了接続 | ブール値 | 間違い | 明示的に閉じられていない接続がガベージ コレクションされる場合、接続の開始時からスタックトレースをログに記録して、リークの原因を追跡します。 |
バイナリ転送 | ブール値 | 真実 | 可能であれば、サポートされている組み込み型のバイナリ転送を有効にします。これを false に設定すると、 binaryTransferEnable でタイプごとに個別にアクティブ化しない限り、バイナリ転送が無効になります。バイナリ転送を使用できるかどうかは、サーバー側の準備されたステートメントによって異なります ( prepareThreshold 参照)。 |
バイナリ転送有効化 | 弦 | 「」 | バイナリ転送を有効にするタイプのカンマ区切りのリスト。 OID 番号または名前のいずれか。 |
バイナリ転送無効化 | 弦 | 「」 | バイナリ転送を無効にするタイプのカンマ区切りのリスト。 OID 番号または名前のいずれか。ドライバーのデフォルト セットの値と binaryTransferEnable で設定された値をオーバーライドします。 |
準備しきい値 | 整数 | 5 | サーバー側のプリペアドステートメントの使用に切り替える前に、必要なPreparedStatement の実行数を決定します。デフォルトは 5 です。これは、同じPreparedStatement オブジェクトの 5 回目の実行でサーバー側の準備済みステートメントの使用を開始することを意味します。値 -1 は、サーバー側のプリペアド ステートメントをアクティブにし、有効な型のバイナリ転送を強制します ( binaryTransfer を参照)。 |
準備されたステートメントキャッシュクエリ | 整数 | 256 | 準備されたステートメントの接続ごとのキャッシュ内のエントリの最大数を指定します。値 0 はキャッシュを無効にします。 |
準備済みステートメントキャッシュサイズMiB | 整数 | 5 | 接続ごとのプリペアドステートメントキャッシュの最大サイズ (メガバイト単位) を指定します。値 0 はキャッシュを無効にします。 |
デフォルト行フェッチサイズ | 整数 | 0 | 各フェッチ反復で ResultSet にさらに多くの行が必要な場合に、データベースからフェッチする必要がある正の行数。 |
ログインタイムアウト | 整数 | 0 | データベース接続の確立を待機する最大秒数 (2147484) を指定します。 |
接続タイムアウト | 整数 | 10 | ソケット接続操作に使用されるタイムアウト値 (秒単位) 最大 (2147484)。 |
ソケットタイムアウト | 整数 | 0 | ソケット読み取り操作に使用されるタイムアウト値 (秒単位) 最大 (2147484)。 |
cancelSignalTimeout | 整数 | 10 | キャンセルコマンドの送信に使用されるタイムアウト。 |
sslResponseTimeout | 整数 | 5000 | サーバーからの SSL アップグレード要求に対する応答を待機するソケットのタイムアウト (ミリ秒単位)。 |
tcpキープアライブ | ブール値 | 間違い | TCP キープアライブを有効または無効にします。 |
tcpNoDelay | ブール値 | 真実 | TCP 遅延なしを有効または無効にします。 |
アプリケーション名 | 弦 | PostgreSQL JDBC ドライバー | アプリケーション名 (サーバー バージョン 9.0 以上が必要)。 assignMinServerVersion が 9.0 以上に設定されている場合、これは起動パケットで送信されます。それ以外の場合は、接続が確立された後に送信されます。 |
読み取り専用 | ブール値 | 間違い | この接続を読み取り専用モードにします |
読み取り専用モード | 弦 | 取引 | 接続が読み取り専用に設定されている場合の動作を指定します。可能な値: 無視、トランザクション、常に |
列サニタイザーを無効にする | ブール値 | 間違い | 列名サニタイザーを無効にする最適化を有効にする |
最小サーバーバージョンを想定 | 弦 | ヌル | サーバーが少なくともそのバージョンであると仮定します |
現在のスキーマ | 弦 | ヌル | 検索パスに設定するスキーマ (またはカンマで区切られた複数のスキーマ) を指定します。 |
ターゲットサーバータイプ | 弦 | どれでも | 接続するサーバーの種類を指定します。可能な値: any、master、slave (非推奨)、Secondary、preferSlave (非推奨)、preferSecondary、preferPrimary |
ホスト再チェック秒数 | 整数 | 10 | ホストのステータスが変化した場合に再度チェックするまでの期間 (秒) を指定します。 |
ロードバランスホスト | ブール値 | 間違い | 無効な場合、ホストは指定された順序で接続されます。有効な場合、ホストは適切な候補のセットからランダムに選択されます |
ソケットファクトリー | 弦 | ヌル | ソケット作成用のソケット ファクトリを指定する |
socketFactoryArg (非推奨) | 弦 | ヌル | SocketFactory クラスのコンストラクターに転送される引数。 |
自動保存 | 弦 | 一度もない | クエリが失敗した場合にドライバーが行うべきことを指定します。可能な値: always、never、conservative |
セーブポイントのクリーンアップ | ブール値 | 間違い | 自動保存モードでは、ドライバーはクエリごとに SAVEPOINT を設定します。サーバーの共有バッファーを使い果たす可能性があります。これを true に設定すると、追加のラウンド トリップを犠牲にして各 SAVEPOINT が解放されます。 |
優先クエリモード | 弦 | 延長された | データベースへのクエリを実行するために使用されるモードを指定します。可能な値:extended、extendedForPrepared、extendedCacheEverything、simple |
reWriteBatchedInserts | ブール値 | 間違い | 最適化を有効にして、バッチ化された互換性のある INSERT ステートメントを書き換えたり折りたたんだりできます。 |
エスケープ構文コールモード | 弦 | 選択する | プロシージャまたは関数を呼び出すために、JDBC エスケープ呼び出し構文が基礎となる SQL (CALL/SELECT) に変換される方法を指定します (サーバー バージョン 11 以上が必要)。可能な値: select、callIfNoReturn、call |
maxResultBuffer | 弦 | ヌル | 結果バッファのサイズをバイト単位で指定します。結果セットの読み取り中にこのサイズを超えることはできません。特定のサイズ (つまり、「100」、「200M」、「2G」) または最大ヒープ メモリのパーセント (つまり、「10p」、「20pct」、「50percent」) として指定できます。 |
gssLib | 弦 | 自動 | 許容値は auto (デフォルト、以下を参照)、sspi (SSPI を強制)、または gssapi (GSSAPI-JSSE を強制) です。 |
gssResponseタイムアウト | 整数 | 5000 | サーバーからの GSS 暗号化接続の要求に対する応答を待機するソケット タイムアウト (ミリ秒単位)。 |
gssEncMode | 弦 | 許可する | 接続に GSSAPI 暗号化を使用するかどうかの設定を制御します。値は、disable、allow、prefer、require です。 |
使用Spnego | 弦 | 間違い | SSPI 認証リクエストで SPNEGO を使用する |
アダプティブフェッチ | ブール値 | 間違い | 各フェッチ反復によって ResultSet にフェッチされる行数を動的にするかどうかを指定します。行数は、maxResultBuffer サイズをこれまでに観測された最大行サイズで割ることによって計算されます。最初の反復では maxResultBuffer とdefaultRowFetchSize を宣言する必要があります。 |
適応型フェッチ最小値 | 整数 | 0 | adaptiveFetch で計算できる最小行数を指定します。 adaptiveFetch で使用される行数は、この値を下回ることはできません。 |
アダプティブフェッチ最大値 | 整数 | -1 | adaptiveFetch で計算できる最大行数を指定します。 adaptiveFetch で使用される行数は、この値を超えることはできません。 adaptiveFetchMinimum として設定された負の数は、adaptiveFetch によって無限の行数として使用されます。 |
ローカルソケットアドレス | 弦 | ヌル | 接続時にドライバーが TCP/IP 接続のクライアント側をバインドするインターフェイスを明示的に構成するために指定されたホスト名または IP アドレス。 |
引用識別子を返す | ブール値 | 真実 | デフォルトでは、返される識別子は二重引用符で囲まれます。一部の ORM はすでにそれらを引用しています。スイッチを使用するとこれをオフにすることができます |
認証プラグインクラス名 | 弦 | ヌル | AuthenticationPlugin インターフェイスを実装するクラスの完全修飾クラス名。これが null の場合、接続プロパティのパスワード値が使用されます。 |
不明な長さ | 整数 | 整数.MAX_LENGTH | 長さが不明な型に対して返す長さを指定します |
文字列型 | 弦 | ヌル | setString() で設定されたPreparedStatement パラメータをバインドするときに使用するタイプを指定します |
チャンネルバインディング | 弦 | 好む | このオプションは、クライアントによるチャネル バインディングの使用を制御します。 require 接続でチャネル バインディングを使用する必要があることを意味し、 prefer 使用可能な場合にクライアントがチャネル バインディングを選択することを意味し、 disable チャネル バインディングの使用を禁止します。 |
財産 | タイプ | デフォルト | 説明 |
---|---|---|---|
pgjdbc.config.cleanup.thread.ttl | 長さ | 30000 | ドライバーには、閉じられていない接続を監視してクリーンアップする内部クリーンアップ スレッドがあります。このプロパティは、クリーンアップするものが何もない場合にクリーンアップ スレッドが実行を続ける期間 (ミリ秒単位) を設定します。 |
プロジェクトに貢献する方法については、「貢献ガイドライン」を参照してください。