-
- 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 ConnectionBuildercreateConnectionBuilder()创建一个新的ConnectionBuilder实例ConnectiongetConnection()尝试与此DataSource对象表示的数据源建立连接。ConnectiongetConnection(String username, String password)尝试与此DataSource对象表示的数据源建立连接。intgetLoginTimeout()获取此数据源在尝试连接到数据库时可以等待的最长时间(以秒为单位)。PrintWritergetLogWriter()检索此DataSource对象的日志DataSource。voidsetLoginTimeout(int seconds)设置此数据源在尝试连接到数据库时将等待的最长时间(以秒为单位)。voidsetLogWriter(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:
-
getLogWriterin 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:
-
setLogWriterin interfaceCommonDataSource - 参数
-
out- 新的日志out; 要禁用日志记录,请设置为null - 异常
-
SQLException- 如果发生数据库访问错误 - 从以下版本开始:
- 1.4
- 另请参见:
-
CommonDataSource.getLogWriter()
-
setLoginTimeout
void setLoginTimeout(int seconds) throws SQLException设置此数据源在尝试连接到数据库时将等待的最长时间(以秒为单位)。 值为零指定超时是默认系统超时(如果有); 否则,它指定没有超时。 创建
DataSource对象时,登录超时最初为零。- Specified by:
-
setLoginTimeoutin interfaceCommonDataSource - 参数
-
seconds- 数据源登录时间限制 - 异常
-
SQLException- 如果发生数据库访问错误。 - 从以下版本开始:
- 1.4
- 另请参见:
-
CommonDataSource.getLoginTimeout()
-
getLoginTimeout
int getLoginTimeout() throws SQLException获取此数据源在尝试连接到数据库时可以等待的最长时间(以秒为单位)。 值为零表示超时是默认系统超时(如果有); 否则,表示没有超时。 创建DataSource对象时,登录超时最初为零。- Specified by:
-
getLoginTimeoutin interfaceCommonDataSource - 结果
- 数据源登录时间限制
- 异常
-
SQLException- 如果发生数据库访问错误。 - 从以下版本开始:
- 1.4
- 另请参见:
-
CommonDataSource.setLoginTimeout(int)
-
createConnectionBuilder
default ConnectionBuilder createConnectionBuilder() throws SQLException
创建一个新的ConnectionBuilder实例- 实现要求:
-
默认实现将抛出
SQLFeatureNotSupportedException - 结果
- 已创建的ConnectionBuilder实例
- 异常
-
SQLException- 如果创建构建器时发生错误 -
SQLFeatureNotSupportedException- 如果驱动程序不支持分片 - 从以下版本开始:
- 9
- 另请参见:
-
ConnectionBuilder
-
-