DB変換クラス

1. DB変換クラスについて

DB変換クラスとは、ApplicationDatabaseとのデータのバインド時、 結果の取得時、PLSQLの実行時にJDBCとWebtribeデータとの中継に使用されます。

 

2. DB変換クラスの使用方法

2-1. 提供クラス

Webtribeにて標準から提供しているDB変換クラスには下記の種類が存在します。

ポイントPoint
バイナリ(Varbiary)と長バイナリ(LongVarbinary)の違いは、データの読み書きにバイト配列を使うか、ストリームを使うかの違いになります。

2-2. 設定方法

Operation Management Consoleのデータクラスにて行います。ダイアログより使用するDB変換クラスを選択して下さい。

 

3. DB変換クラスの作成方法

3-1. 作成方法

jp.ne.mki.wedge.data.db.defaults.DefaultDBDataConvertを継承してクラスを作成します。
継承したメソッドのうち、オーバライドするメソッドは以下の4つになります。これらのメソッドをオーバライドしない場合は、標準のDB変換クラス 文字列(VARCHAR)と同じ動作となります。


DB変換クラスの実装例として、長整数型(Long)を以下に記します。
(このクラスは標準でWebtribeに組み込まれています)

package jp.ne.mki.wedge.data.db.defaults;

import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;

/**
 * 渡されたオブジェクトを long として処理します。
 * オブジェクトが String, BigDecimal, Integer の場合は、long 型に変換してから処理を行います。
 * オブジェクトが long の場合は、そのまま処理を行います。
 * オブジェクトが long, BigDecimal, String のいずれでもない場合は、オブジェクトのまま渡します。
 * この場合の処理結果はデータベースに依存するため保証されません。
 *
 */
public class Long extends DefaultDBDataConvert {
  /**
   * ストアドプロシージャから long 型としてデータを取り出します。
   * @see jp.ne.mki.wedge.run.db.control.dbc.DBDataConvert#getObject(java.sql.CallableStatement, int)
   */
  public Object getObject(CallableStatement cs, int idx) throws SQLException {
    long ll = cs.getLong(idx);
    if (cs.wasNull()) {
      return null;
    } else {
      return java.lang.Long.toString(ll);
    }
  }

  /**
   * 検索結果から long 型としてデータを取り出します。
   * @see jp.ne.mki.wedge.run.db.control.dbc.DBDataConvert#getObject(java.sql.ResultSet, int)
   */
  public Object getObject(ResultSet rs, int idx) throws SQLException {
    long ll = rs.getLong(idx);
    if (rs.wasNull()) {
      return null;
    } else {
      return java.lang.Long.toString(ll);
    }
  }

  /**
   * ストアドプロシージャに出力データの型を BIGINT して登録します。
   * @see jp.ne.mki.wedge.run.interfaces.DBDataConvertInterface#registOutputDataType(java.sql.CallableStatement, int)
   */
  public void registOutputDataType(CallableStatement cs, int idx) throws SQLException {
    cs.registerOutParameter(idx, Types.BIGINT);
  }

  /**
   * 渡されたオブジェクトが文字列(String)の場合は long に変換してからデータベースに渡します。
   * @see jp.ne.mki.wedge.run.db.control.dbc.DBDataConvert#setObject(java.sql.PreparedStatement, int, java.lang.Object)
   */
  public void setObject(PreparedStatement stmt, int idx, Object data)
    throws SQLException {
    if (data == null) {
      stmt.setNull(idx, Types.BIGINT);
    } else {
      if (data instanceof String) {
        String str = (String) data;
        if (str.length() == 0) {
          stmt.setNull(idx, Types.BIGINT);
        } else {
          long ll = java.lang.Long.parseLong(str);
          stmt.setLong(idx, ll);
        }
      } else if (data instanceof java.lang.Integer) {
        stmt.setLong(idx, ((java.lang.Integer) data).longValue());
      } else if (data instanceof java.lang.Long) {
        stmt.setLong(idx, ((java.lang.Long) data).longValue());
      } else if (data instanceof java.math.BigDecimal) {
        stmt.setLong(idx, ((java.math.BigDecimal) data).longValue());
      } else {
        stmt.setObject(idx, data);
      }
    }
  }

}
			

3-2. Webtribe登録方法

実装したクラスをWebtribeに登録するには、Operation Management Console基本クラスタブのDB変換クラスに追加します。
クラス名には作成したクラスのパスを入力してください。
実行時には作成したクラスをRunDBServerのクラスパスに指定して実行してください。