-
- All Superinterfaces:
-
CommonDataSource
,Wrapper
public interface DataSource extends CommonDataSource, Wrapper
用于连接此
DataSource
对象表示的物理数据源的工厂。 作为DriverManager
工具的替代方案,DataSource
对象是获取连接的首选方法。 实现DataSource
接口的对象通常将使用基于JavaDataSource
命名和目录(JNDI)API的命名服务进行注册。DataSource
接口由驱动程序供应商实现。 有三种类型的实现:- 基本实现 - 生成标准的
Connection
对象 - 连接池实现 - 生成一个
Connection
对象,该对象将自动参与连接池。 此实现适用于中间层连接池管理器。 - 分布式事务实现 - 生成一个
Connection
对象,该对象可用于分布式事务,并且几乎总是参与连接池。 此实现与中间层事务管理器一起使用,并且几乎总是与连接池管理器一起使用。
DataSource
对象具有可在必要时进行修改的属性。 例如,如果将数据源移动到其他服务器,则可以更改服务器的属性。 好处是因为可以更改数据源的属性,所以不需要更改访问该数据源的任何代码。通过
DataSource
对象访问的驱动程序不会向DriverManager
注册自己。 而是通过查找操作检索DataSource
对象,然后用于创建Connection
对象。 通过基本实现,通过DataSource
对象获得的连接与通过DriverManager
工具获得的连接相同。DataSource
的实现必须包含public no-arg构造函数。- 从以下版本开始:
- 1.4
-
-
方法摘要
所有方法 实例方法 抽象方法 Default Methods 变量和类型 方法 描述 default ConnectionBuilder
createConnectionBuilder()
创建一个新的ConnectionBuilder
实例Connection
getConnection()
尝试与此DataSource
对象表示的数据源建立连接。Connection
getConnection(String username, String password)
尝试与此DataSource
对象表示的数据源建立连接。int
getLoginTimeout()
获取此数据源在尝试连接到数据库时可以等待的最长时间(以秒为单位)。PrintWriter
getLogWriter()
检索此DataSource
对象的日志DataSource
。void
setLoginTimeout(int seconds)
设置此数据源在尝试连接到数据库时将等待的最长时间(以秒为单位)。void
setLogWriter(PrintWriter out)
将此DataSource
对象的日志DataSource
设置为给定的java.io.PrintWriter
对象。-
声明方法的接口 javax.sql.CommonDataSource
createShardingKeyBuilder, getParentLogger
-
声明方法的接口 java.sql.Wrapper
isWrapperFor, unwrap
-
-
-
-
方法详细信息
-
getConnection
Connection getConnection() throws SQLException
尝试与此
DataSource
对象表示的数据源建立连接。- 结果
- 与数据源的连接
- 异常
-
SQLException
- 如果发生数据库访问错误 -
SQLTimeoutException
- 当驱动程序确定已超出setLoginTimeout
方法指定的超时值并且至少尝试取消当前数据库连接尝试时
-
getConnection
Connection getConnection(String username, String password) throws SQLException
尝试与此
DataSource
对象表示的数据源建立连接。- 参数
-
username
- 代表其建立连接的数据库用户 -
password
- 用户的密码 - 结果
- 与数据源的连接
- 异常
-
SQLException
- 如果发生数据库访问错误 -
SQLTimeoutException
- 当驱动程序确定已超出setLoginTimeout
方法指定的超时值并且至少尝试取消当前数据库连接尝试时 - 从以下版本开始:
- 1.4
-
getLogWriter
PrintWriter getLogWriter() throws SQLException
检索此
DataSource
对象的日志DataSource
。日志写入程序是一个字符输出流,将打印此数据源的所有日志记录和跟踪消息。 这包括由此对象的方法打印的消息,由此对象生成的其他对象的方法打印的消息,等等。 打印到特定于数据源的日志写入程序的消息不会打印到与
java.sql.DriverManager
类关联的日志java.sql.DriverManager
。 创建DataSource
对象时,日志DataSource
器最初为null; 换句话说,默认情况下禁用日志记录。- Specified by:
-
getLogWriter
in interfaceCommonDataSource
- 结果
- 此数据源的日志编写器,如果禁用日志记录,则为null
- 异常
-
SQLException
- 如果发生数据库访问错误 - 从以下版本开始:
- 1.4
- 另请参见:
-
CommonDataSource.setLogWriter(java.io.PrintWriter)
-
setLogWriter
void setLogWriter(PrintWriter out) throws SQLException
将此
DataSource
对象的日志DataSource
设置为给定的java.io.PrintWriter
对象。日志写入程序是一个字符输出流,将打印此数据源的所有日志记录和跟踪消息。 这包括由此对象的方法打印的消息,由此对象生成的其他对象的方法打印的消息,等等。 打印到特定于数据源的日志写入程序的消息不会打印到与
java.sql.DriverManager
类关联的日志java.sql.DriverManager
。 创建DataSource
对象时,日志DataSource
器最初为null; 换句话说,默认情况下禁用日志记录。- Specified by:
-
setLogWriter
in interfaceCommonDataSource
- 参数
-
out
- 新的日志out
; 要禁用日志记录,请设置为null - 异常
-
SQLException
- 如果发生数据库访问错误 - 从以下版本开始:
- 1.4
- 另请参见:
-
CommonDataSource.getLogWriter()
-
setLoginTimeout
void setLoginTimeout(int seconds) throws SQLException
设置此数据源在尝试连接到数据库时将等待的最长时间(以秒为单位)。 值为零指定超时是默认系统超时(如果有); 否则,它指定没有超时。 创建
DataSource
对象时,登录超时最初为零。- Specified by:
-
setLoginTimeout
in interfaceCommonDataSource
- 参数
-
seconds
- 数据源登录时间限制 - 异常
-
SQLException
- 如果发生数据库访问错误。 - 从以下版本开始:
- 1.4
- 另请参见:
-
CommonDataSource.getLoginTimeout()
-
getLoginTimeout
int getLoginTimeout() throws SQLException
获取此数据源在尝试连接到数据库时可以等待的最长时间(以秒为单位)。 值为零表示超时是默认系统超时(如果有); 否则,表示没有超时。 创建DataSource
对象时,登录超时最初为零。- Specified by:
-
getLoginTimeout
in interfaceCommonDataSource
- 结果
- 数据源登录时间限制
- 异常
-
SQLException
- 如果发生数据库访问错误。 - 从以下版本开始:
- 1.4
- 另请参见:
-
CommonDataSource.setLoginTimeout(int)
-
createConnectionBuilder
default ConnectionBuilder createConnectionBuilder() throws SQLException
创建一个新的ConnectionBuilder
实例- 实现要求:
-
默认实现将抛出
SQLFeatureNotSupportedException
- 结果
- 已创建的ConnectionBuilder实例
- 异常
-
SQLException
- 如果创建构建器时发生错误 -
SQLFeatureNotSupportedException
- 如果驱动程序不支持分片 - 从以下版本开始:
- 9
- 另请参见:
-
ConnectionBuilder
-
-