OceanBase Connector/J 使用方法


本文介紹了 OceanBase 數據庫的 JDBC 驅動:oceanbase-client 和 MySQL 官方 JDBC 驅動:mysql-connector-Java 的使用說明和配置方法。

推薦使用 OceanBase 數據庫的 JDBC 驅動:oceanbase-client。

連接 MySQL 租戶也可以使用 MySQL 官方 JDBC 驅動:mysql-connector-Java。推薦使用 5.1.30 和 5.1.40 版本,其他版本可能存在兼容問題。

 
注意
  • oceanbase-client 完全兼容 MySQL JDBC 的使用方式,且可以自動識別 OceanBase 的運行模式是 MySQL 還是 Oracle,因為其在協議層兼容這兩種模式。

  • mysql-connector-Java 只支持 MySQL 運行模式。

oceanbase-client 使用說明

連接串的前綴需要設置為 jdbc:oceanbase ,其他部分的使用方式與原生的 MySQL 使用方式保持一致。

 
注意

1.0.9 版本的 oceanbase-client 的驅動類名為:com.alipay.oceanbase.obproxy.mysql.jdbc.Driver。后續版本驅動類名改為:com.alipay.oceanbase.jdbc.Driver。

 

代碼示例如下所示:

  String url = "jdbc:oceanbase://xxx.xxx.xxx.xxx:2883/SYS?useUnicode=true&characterEncoding=utf-8";              //IP地址:OBProxy端口號/數據庫名
  String username = "SYS@test1#obtest";                                                                          //用戶名@租戶名#集群名稱
  String password = "test";                                                                                      //密碼
  Connection conn = null;                                                                                         
  try {                                                                                                           
      Class.forName("com.alipay.oceanbase.obproxy.mysql.jdbc.Driver");                                             //驅動類名
      conn = DriverManager.getConnection(url, username, password);
      PreparedStatement ps = conn.prepareStatement("select to_char(sysdate,'yyyy-MM-dd HH24:mi:ss') from dual;");
      ResultSet rs = ps.executeQuery();
      rs.next();
      System.out.println("sysdate is:" + rs.getString(1));
      rs.close();
      ps.close();
  } catch (Exception e) {
      e.printStackTrace();
  } finally {
      if (null != conn) {
          conn.close();
      }
  }

mysql-connector-Java 使用說明

連接串的前綴需要設置為 jdbc:mysql,驅動類名為:com.mysql.jdbc.Driver。

代碼示例如下所示:

String url = "jdbc:mysql://xxx.xxx.xxx.xxx:2883/hr?useUnicode=true&characterEncoding=utf-8";                    //IP地址:OBProxy端口號/數據庫名
String username = "root@test2#obtest";                                                                          //用戶名@租戶名#集群名稱
String password = "test";                                                                                       //密碼
Connection conn = null;
try {
    Class.forName("com.mysql.jdbc.Driver");                                                                       //驅動類名
    conn = DriverManager.getConnection(url, username, password);
    PreparedStatement ps = conn.prepareStatement("select date_format(now(),'%Y-%m-%d %H:%i:%s');");
    ResultSet rs = ps.executeQuery();
    rs.next();
    System.out.println("sysdate is:" + rs.getString(1));
    rs.close();
    ps.close();
} catch (Exception e) {
    e.printStackTrace();
} finally {
    if (null != conn) {
        conn.close();
    }
}

JDBC 驅動實踐

下述表格中展示了 JDBC 中幾個必須要設置的重要參數。均可以設置到連接池的 ConnectionProperties 中,或者 JdbcURL 上:

參數

說明

推薦值

readTimeout

網絡讀超時時間,如果不設置默認是 0,使用 OS 默認超時時間。

5000 ms

connectTimeout

鏈接建立超時時間,如果不設置默認是 0,使用 OS 默認超時時間。

500 ms

應用連接池配置

將應用和數據庫連接進行業務操作,建議使用連接池。如果是 Java 程序,推薦使用 Druid 連接池。配置示例如下所示:

<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
    <property name="driverClassName" value="com.mysql.jdbc.Driver" />
    <!-- 基本屬性 URL、user、password -->
    <property name="url" value="jdbc:mysql://ip:port/db?socketTimeout=30000&amp;connectTimeout=3000" />
    <property name="username" value="{user}" />
    <property name="password" value="{password}" />
    <!-- 配置初始化大小、最小、最大 -->
    <property name="maxActive" value="4" />                                                                       //initialSize/minIdle/maxActive視業務規模設置
    <property name="initialSize" value="2" />
    <property name="minIdle" value="2" />
    <!-- 獲取連接等待超時的時間,單位是毫秒 -->
    <property name="maxWait" value="1000" />
    <!-- 間隔多久才進行一次檢測,檢測需要關閉的空閑連接,單位是毫秒 -->
    <property name="timeBetweenEvictionRunsMillis" value="60000" />
    <!-- 一個連接在池中最小空閑的時間,單位是毫秒-->
    <property name="minEvictableIdleTimeMillis" value="300000" />
    <!-- 檢測連接是否可用的 SQL -->
    <property name="validationQuery" value="SELECT foo FROM bar" />                                               //找真實的、記錄少的業務表用作查詢探測語句
    <!-- 是否開啟空閑連接檢查 -->
    <property name="testWhileIdle" value="true" />
    <!-- 是否在獲取連接前檢查連接狀態 -->
    <property name="testOnBorrow" value="false" />
    <!-- 是否在歸還連接時檢查連接狀態 -->
    <property name="testOnReturn" value="false" />
</bean>

更多信息

有關 OceanBase Connector/J 的詳細介紹和使用方法,請參見 《 OceanBase Connector/J 》。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM