PostgreSQL JDBC 驅動程式(簡稱 PgJDBC)允許 Java 程式使用標準的、獨立於資料庫的 Java 程式碼連接到 PostgreSQL 資料庫。是一個以純 Java(類型 4)編寫的開源 JDBC 驅動程序,並以 PostgreSQL 本機網路協定進行通訊。
目前版本的驅動程式應與使用 3.0 版協定和Java 8 (JDBC 4.2) 或更高版本的PostgreSQL 8.4 及更高版本相容。除非您有特殊要求(運行舊應用程式或 JVM),否則您應該使用此驅動程式。
PgJDBC 回歸測試針對 9.1 以來的所有 PostgreSQL 版本運行,包括「從 git master 建立 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 版本來測試目前的開發版本(測試一些錯誤修復)。
Fedora 的 Copr 儲存庫中也提供了可用(快照)二進位 RPM。
有關詳細信息,您可以閱讀 PgJDBC 驅動程式文檔,或有關一般 JDBC 文檔,請參閱 Java™ 教程。
實施 | 班級 |
---|---|
java.sql.驅動程式 | org.postgresql.Driver |
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) |
工廠 | 細繩 | org.postgresql.ssl.LibPQFactory | 使用 SSL 時提供 SSLSocketFactory 類別。 |
sslfactoryarg(已棄用) | 細繩 | 無效的 | 參數轉送到 SSLSocketFactory 類別的建構子。 |
SSL模式 | 細繩 | 更喜歡 | 控制使用 SSL 加密連線開啟的首選項。 |
SSL憑證 | 細繩 | 無效的 | 客戶端 SSL 憑證的位置 |
金鑰 | 細繩 | 無效的 | 客戶端 PKCS#8 或 PKCS#12 SSL 金鑰的位置,對於 PKCS,副檔名必須是 .p12 或 .pfx,別名必須是user |
ssl根憑證 | 細繩 | 無效的 | 用於驗證伺服器身分的根憑證的位置。 |
ssl主機名稱驗證器 | 細繩 | 無效的 | 實作 javax.net.ssl.HostnameVerifier 並可以驗證伺服器主機名稱的類別的名稱(用於 Class.forName(String))。 |
ssl密碼回調 | 細繩 | 無效的 | 實作 javax.security.auth.callback.CallbackHandler 並可以處理 ssl 密碼的 PasswordCallback 的類別的名稱(在 Class.forName(String) 中使用)。 |
SSL密碼 | 細繩 | 無效的 | 客戶端 ssl 金鑰的密碼(如果設定了 sslpasswordcallback,則忽略) |
協商 | 細繩 | postgres | 決定是否使用 ALPN ssl 協商。設定為direct 選擇 ALPN。 |
傳送緩衝區大小 | 整數 | -1 | 套接字寫入緩衝區大小 |
最大發送緩衝區大小 | 整數 | 65536 | 發送到後端之前緩衝的最大位元組數。 pgjdbc使用least(maxSendBufferSize, greatest(8192, SO_SNDBUF)) 來決定緩衝區大小。 |
接收緩衝區大小 | 整數 | -1 | 套接字讀取緩衝區大小 |
日誌伺服器錯誤詳細信息 | 布林值 | 真的 | 允許記錄伺服器錯誤詳細資訊(例如 sql 語句和值)並在異常中傳遞。設定為 false 將屏蔽這些錯誤,這樣它們就不會暴露給使用者或日誌。 |
允許編碼更改 | 布林值 | 錯誤的 | 允許更改 client_encoding |
日誌未關閉的連接 | 布林值 | 錯誤的 | 當未明確關閉的連接被垃圾收集時,記錄連接打開時的堆疊追蹤以追蹤洩漏源 |
二進位傳輸 | 布林值 | 真的 | 如果可能,請為支援的內建類型啟用二進位傳輸。將其設為 false 會停用任何二進位傳輸,除非使用binaryTransferEnable 為每種類型單獨啟動它。是否可以使用二進位傳輸取決於伺服器端準備好的語句(請參閱prepareThreshold )。 |
二進位傳輸啟用 | 細繩 | ”” | 以逗號分隔的類型清單以啟用二進位傳輸。 OID 編號或名稱。 |
二進位傳輸停用 | 細繩 | ”” | 以逗號分隔的類型清單以停用二進位傳輸。 OID 編號或名稱。覆蓋驅動程式預設設定中的值和使用 binaryTransferEnable 設定的值。 |
準備閾值 | 整數 | 5 | 確定切換到使用伺服器端準備好的語句之前所需的PreparedStatement 執行次數。預設值為 5,這表示在第五次執行相同PreparedStatement 物件時開始使用伺服器端準備好的語句。值 -1 啟動伺服器端準備好的語句並強制啟用類型的二進位傳輸(請參閱binaryTransfer )。 |
準備好的語句快取查詢 | 整數 | 256 | 指定預先準備語句的每個連線快取中的最大條目數。值為 0 會停用快取。 |
準備好的語句快取大小MiB | 整數 | 5 | 指定每個連線準備好的語句快取的最大大小(以兆位元組為單位)。值為 0 會停用快取。 |
預設行獲取大小 | 整數 | 0 | 當每次取得迭代 ResultSet 需要更多行時,應從資料庫取得的正數行 |
登入逾時 | 整數 | 0 | 指定等待建立資料庫連線的時間長度 max(2147484)。 |
連線逾時 | 整數 | 10 | 用於套接字連接操作的逾時值(以秒為單位)最大值 (2147484)。 |
套接字超時 | 整數 | 0 | 用於套接字讀取操作的逾時值(以秒為單位)最大值 (2147484)。 |
取消訊號逾時 | 整數 | 10 | 用於發送取消命令的超時時間。 |
ssl回應超時 | 整數 | 5000 | 等待伺服器 SSL 升級請求回應的套接字逾時(以毫秒為單位)。 |
TCP保活 | 布林值 | 錯誤的 | 啟用或停用 TCP 保持活動狀態。 |
tcp無延遲 | 布林值 | 真的 | 啟用或停用 TCP 無延遲。 |
應用程式名稱 | 細繩 | PostgreSQL JDBC 驅動程式 | 應用程式名稱(需要伺服器版本 >= 9.0)。如果假設MinServerVersion設定為> = 9.0,這將在啟動資料包中發送,否則在建立連線後發送 |
只讀 | 布林值 | 錯誤的 | 將此連接置於唯讀模式 |
唯讀模式 | 細繩 | 交易 | 指定連線設定為唯讀時的行為,可能的值:ignore、transaction、always |
禁用ColumnSanitiser | 布林值 | 錯誤的 | 啟用停用列名稱清理程式的最佳化 |
假定最低伺服器版本 | 細繩 | 無效的 | 假設伺服器至少是該版本 |
目前模式 | 細繩 | 無效的 | 指定要在搜尋路徑中設定的模式(或以逗號分隔的多個模式) |
目標伺服器類型 | 細繩 | 任何 | 指定要連接的伺服器類型,可能的值:any、master、slave(已棄用)、 secondary、preferSlave(已棄用)、preferSecondary、preferPrimary |
主機重新檢查秒數 | 整數 | 10 | 指定在主機狀態發生變更後再次檢查主機狀態的時間段(秒) |
負載平衡主機 | 布林值 | 錯誤的 | 禁用的主機是否按給定順序連接。如果啟用的主機是從一組適當的候選者中隨機選擇的 |
套接字工廠 | 細繩 | 無效的 | 指定用於套接字創建的套接字工廠 |
socketFactoryArg(已棄用) | 細繩 | 無效的 | 參數轉送到 SocketFactory 類別的建構子。 |
自動儲存 | 細繩 | 絕不 | 指定如果查詢失敗驅動程式應該做什麼,可能的值:always、never、conservative |
清理保存點 | 布林值 | 錯誤的 | 在自動儲存模式下,驅動程式為每個查詢設定一個儲存點。可能會耗盡伺服器共享緩衝區。將其設為 true 將釋放每個 SAVEPOINT,但代價是額外的往返。 |
首選查詢模式 | 細繩 | 擴充 | 指定使用哪種模式來執行對資料庫的查詢,可能的值:extended、extendedForPrepared、extendedCacheEverything、simple |
重寫批次插入 | 布林值 | 錯誤的 | 啟用最佳化以重寫和折疊相容的批次 INSERT 語句。 |
escape語法呼叫模式 | 細繩 | 選擇 | 指定如何將 JDBC 轉義呼叫語法轉換為底層 SQL (CALL/SELECT),用於呼叫程序或函數(需要伺服器版本 >= 11),可能的值:select、callIfNoReturn、call |
最大結果緩衝區 | 細繩 | 無效的 | 指定結果緩衝區的大小(以位元組為單位),讀取結果集期間不能超過該大小。可指定為特定大小(即「100」、「200M」、「2G」)或最大堆記憶體的百分比(即「10p」、「20pct」、「50percent」) |
gss函式庫 | 細繩 | 汽車 | 允許的值為 auto(預設值,請參閱下文)、sspi(強制 SSPI)或 gssapi(強制 GSSAPI-JSSE)。 |
gss回應逾時 | 整數 | 5000 | 等待來自伺服器的 GSS 加密連線請求的回應的套接字逾時(以毫秒為單位)。 |
gss編碼模式 | 細繩 | 允許 | 控制連接使用 GSSAPI 加密的首選項,值包括:disable、allow、prefer 和 require |
使用Spnego | 細繩 | 錯誤的 | 在 SSPI 驗證請求中使用 SPNEGO |
自適應抓取 | 布林值 | 錯誤的 | 指定每次獲取迭代在 ResultSet 中取得的行數是否應該是動態的。行數將透過將 maxResultBuffer 大小除以迄今為止觀察到的最大行大小來計算。需要為第一次迭代聲明 maxResultBuffer 和 defaultRowFetchSize。 |
自適應FetchMinimum | 整數 | 0 | 指定最小行數,可由adaptiveFetch 計算。 AdaptiveFetch 使用的行數不能低於此值。 |
自適應獲取最大值 | 整數 | -1 | 指定最大行數,可由adaptiveFetch 計算。 AdaptiveFetch 使用的行數不能超過此值。任何設定為adaptiveFetchMaximum 的負數都會被adaptiveFetch 用作無限行數。 |
本地套接字位址 | 細繩 | 無效的 | 提供主機名稱或 IP 位址,用於明確設定驅動程式在連線時將 TCP/IP 連線的用戶端綁定到的介面。 |
引用返回標識符 | 布林值 | 真的 | 預設情況下,我們用雙引號傳回標識符。一些 ORM 已經引用了它們。開關允許他們關閉此功能 |
身份驗證插件類別名 | 細繩 | 無效的 | 實作 AuthenticationPlugin 介面的類別的完全限定類別名稱。如果為空,則將使用連線屬性中的密碼值。 |
未知長度 | 整數 | 整數.MAX_LENGTH | 指定未知長度類型傳回的長度 |
字串類型 | 細繩 | 無效的 | 指定綁定透過setString() 設定的PreparedStatement 參數時要使用的類型 |
通道綁定 | 細繩 | 更喜歡 | 此選項控制客戶端對通道綁定的使用。 require 表示連線必須使用通道綁定, prefer 表示客戶端將選擇通道綁定(如果可用), disable 阻止使用通道綁定。 |
財產 | 類型 | 預設 | 描述 |
---|---|---|---|
pgjdbc.config.cleanup.thread.ttl | 長的 | 30000 | 該驅動程式有一個內部清理線程,用於監視和清理未關閉的連接。此屬性設定如果沒有任何內容需要清理,清理執行緒將繼續運行的持續時間(以毫秒為單位)。 |
有關如何為該專案做出貢獻的信息,請參閱貢獻指南