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