-
- 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 ConnectionBuildercreateConnectionBuilder()创建一个新的ConnectionBuilder实例ConnectiongetConnection()尝试建立与此DataSource对象所代表的数据源的连接。ConnectiongetConnection(String username, String password)尝试建立与此DataSource对象所代表的数据源的连接。intgetLoginTimeout()获取此数据源在尝试连接到数据库时可以等待的最长时间(秒)。PrintWritergetLogWriter()检索DataSource对象的日志记录器。voidsetLoginTimeout(int seconds)设置该数据源在尝试连接到数据库时将等待的最长时间(秒)。voidsetLogWriter(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
-
-