阅读(3813) (0)

OceanBase 数据源的特性和属性

2021-06-30 14:40:14 更新

通过将数据源功能与 JNDI 结合使用,就不需要注册供应商指定的 JDBC 驱动程序类名称,还可以将逻辑名称用于 URL 和其他属性,这样确保了用于打开数据库连接的代码可以移植到其他环境。

DataSource 接口

JDBC 数据源是实现标准 ​javax.sql.DataSource​ 接口类的实例,如下所示:

public interface DataSource
{
   Connection getConnection() throws SQLException;
   Connection getConnection(String username, String password)
      throws SQLException;
   ...
}

OceanBase 数据库使用 ​ocanbase.jdbc.pool​ 软件包中的 ​OceanBaseDataSource​ 类实现此接口,通过 ​getConnection​ 方法重载返回到数据库的连接。

要使用其他值,可以使用适当的 ​Setter​ 方法设置对应属性。对于备用用户名和密码,还可以将这些参数作输入到 ​getConnection​方法,这优先于属性设置。

DataSource 属性

与实现 ​DataSource​ 接口的类一样,​OceanBaseDataSource​ 类提供了一组属性,可用于指定要连接的数据库。这些属性遵循 JavaBeans 设计模式。

OceanBaseDataSource​ 依据 Sun Microsystems 规范的标准属性,如下表所示。

名称

类型

描述

databaseName

String

服务器上指定数据库的名称。

dataSourceName

String

基础数据源类的名称。对于连接池,这是基础池连接数据源类。对于分布式事务,这是基础 XA 数据源类。

description

String

对数据源的描述。

networkProtocol

String

与服务器通信的网络协议。

password

String

连接用户的密码。

portNumber

int

服务器侦听请求的端口号。

serverName

String

数据库服务器名称。

user

String

登录名。

OceanBaseDataSource​ 扩展的数据源属性如下表所示。

名称

类型

描述

connectionCacheName

String

指定缓存的名称。创建缓存后无法更改。

connection­Cache­Properties

java.util.Properties

指定隐式连接缓存的属性。

connectionCachingEnabled

Boolean

指定是否使用隐式连接缓存。

connectionProperties

java.util.Properties

指定连接属性。

driverType

String

指定 JDBC 驱动程序类型。

fastConnectionFailoverEnabled

Boolean

指定是否正在使用快速连接故障转移。

implicitCachingEnabled

Boolean

指定是否启用隐式语句连接缓存。

loginTimeout

int

指定此数据源在尝试连接到数据库时将等待的最长时间(以秒为单位)。

logWriter

java.io.PrintWriter

指定此数据源的日志编写器。

maxStatements

int

指定应用程序缓存中的最大语句数。

serviceName

String

指定此数据源的数据库服务名称。

tnsEntry

String

指定 TNS 条目名称。TNS 条目名称对应于 tnsnames.ora 配置文件中指定的 TNS 条目。

url

String

指定数据库连接字符串的 URL。可以使用此属性代替 tnsEntry 和 driverType 属性以及标准 portNumbernetworkProtocolserverName 和 databaseName属性。

ONSConfiguration

String

指定用于远程订阅 FAN/ONS 事件的 ONS 配置字符串。

使用 ​setConnectionProperties​ 方法设置连接的属性,并使用 ​setConnectionCacheProperties​ 方法设置连接缓存的属性。另外,只有在对数据源启用了缓存之后才设置了数据源的 ​ConnectionCacheName​ 属性,​getConnectionCacheName()​ 才会返回缓存的名称。