About

ドキュメント

Javadoc

モジュール

プロジェクト文書

Built by Maven

SQLのログ

S2JDBCで実行したSQLは、Seasar2のロガーからログ出力されます。 SQLのログ出力を有効にするには、以下のカテゴリと出力レベルを有効にしてください。

  • org.seasar.extension.jdbc カテゴリ
  • DEBUG レベル

SQLは、バインド変数に実際に適用される引数が埋め込まれた状態でフォーマットされます。

SqlLogRegistry

S2JDBCで実行したSQLのログは、アプリケーションから参照することも可能です。 SQLのログは org.seasar.extension.jdbc.SqlRegistry のインスタンスから取得します。

SqlRegistry のインスタンスはDIもしくはルックアップにより取得できます。

DIのための設定は次のようになります。

<component name="sqlLogRegistry"
  class="org.seasar.extension.jdbc.SqlLogRegistry">
  @org.seasar.extension.jdbc.SqlLogRegistryLocator@getInstance()
</component>

プログラムから直接ルックアップする場合は次のようなコードが必要です。

SqlLogRegistry sqlLogRegistry = SqlLogRegistryLocator.getInstance();
SqlRegistry のインスタンスは複数のログを保持しています(デフォルトでは最新3つのログを保持します)。 最新の(最後に実行された)SQLのログは次のようなコードで取得できます。
SqlLog sqlLog = sqlLogRegistry.getLast();
org.seasar.extension.jdbc.SqlLog のインスタンスは次の情報を保持しています。
  • 未加工のSQL
  • バインド変数を実際の値で置き換えた完全なSQL
  • SQLにバインドされる値の配列
  • SQLにバインドされる値の型の配列

複数のデータソース

複数のデータソースに接続する方法を説明します。 ここでは、OracleとDB2に接続する例を取り上げます。

jdbc.diconをコピーして、jdbc-oracle.dicon、 jdbc-db2.diconを作ります。 それぞれの設定ファイルの中身は、 JDBCの設定 を参考にして 適切に設定してください。 データソースのコンポーネントには、 それぞれoracleDataSource、db2DataSourceと名前をつけます。 diconのファイル名やデータソース名は、 任意の名前にすることができます。

元のjdbc.diconは次のように、jdbc-oracle.dicon、 jdbc-db2.diconをincludeするだけにします。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
    "http://www.seasar.org/dtd/components24.dtd">
<components>
    <include path="jdbc-oracle.dicon"/>
    <include path="jdbc-db2.dicon"/>
</components>

s2jdbc.diconをコピーして、s2jdbc-oracle.dicon、 s2jdbc-db2.diconを作ります。 それぞれの設定ファイルの中身は、 S2JDBCセットアップ を参考にして 適切に設定してください。 includeするのは、jdbc.diconではなく、 s2jdbc-oracle.diconではjdbc-oracle.dicon、 s2jdbc-db2.diconではjdbc-db2.diconになります。 また、JdbcManagerには、 それぞれoracleJdbcManager、db2JdbcManagerと名前をつけます。 JdbcManagerは、 任意の名前にすることができます。

元のs2jdbc.diconは次のように、s2jdbc-oracle.dicon、 s2jdbc-db2.diconをincludeするだけにします。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
    "http://www.seasar.org/dtd/components24.dtd">
<components>
    <include path="s2jdbc-oracle.dicon"/>
    <include path="s2jdbc-db2.dicon"/>
</components>

JdbcManagerを利用するクラスは、 @Bindingを使ってどのJdbcManagerを 利用するのかを指定します。

@Binding("oracleJdbcManager")
public JdbcManager jdbcManager;