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 加密的首选项,值包括禁用、允许、首选和要求 |
使用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 | 该驱动程序有一个内部清理线程,用于监视和清理未关闭的连接。此属性设置如果没有任何内容需要清理,清理线程将继续运行的持续时间(以毫秒为单位)。 |
有关如何为该项目做出贡献的信息,请参阅贡献指南