2011年11月7日月曜日

[Seasar2][S2JDBC][MySQL]S2JDBCとMySQLの連携

Seasar2はデフォルトでH2というデータベースを持っており、そのままだとH2でS2JDBCのサンプルを動かすこととなる。
S2JDBCで他のDB(この例ではMySQL)と連携したい場合は、次の設定ファイルを書き換える。

1. src/main/resources/jdbc.dicon

    H2の設定をHTMLコメント(<!-- -->)で囲んで無効化し、代わりにMySQLのHTMLコメントを外して有効化する。
    MySQLの設定で変更する必要があるのは、次の箇所。

    (1) URL
        "jdbc:mysql://[位置]:[ポート番号]/[データベース名]"
        位置はIPアドレスもしくは名前解決されているマシン名を指定する。

    (2) user
        データベースのユーザ名。

    (3) password
        データベースユーザのパスワード。

2. src/main/resources/s2jdbc.dicon

    H2の設定をHTMLコメント(<!-- -->)で囲んで無効化し、代わりにMySQLのHTMLコメントを外して有効化する。
    動作確認は、次のようにして行う。

    (1) データベーステーブルの構成と同じエンティティクラスを作成する。
        主キーは@Id、自動採番なら@GeneratedValueアノテーションを忘れずに付ける。
        楽観ロックのためのバージョン番号属性は@Versionアノテーションを忘れずに付ける。

    (2) S2AbstractService<[エンティティ名]>をextendsしたクラスを作成する。(DAOの実装クラス)

    (3) アクションクラスで上記(2)のDAOクラスをインジェクションする。
        (@Resourceアノテーションを付けて、private属性としてクラス内に宣言する)
        デバッグ実行して、実際にDAO実装クラスがインジェクションされていれば成功。

    (4) 上記(2)で作成したDAO実装クラスに、S2JDBCを動作させる次のようなコードを記述し、動作を確認する。

        public [エンティティクラス] get(Integer id) {

            return select().id(id).getSingleResult();
        }

        データが正しく取得できていれば成功。

0 件のコメント:

コメントを投稿