FrontPage > SAStrutsの覚書

S2JDBC

1. 設定

2. gen-entity

データベースに登録されているテーブルからエンティティクラス、サービスクラス等を生成する。

コマンドラインで、プロジェクトルートディレクトリに移動し
以下のコマンドを実行する。

ant -f s2jdbc-gen-build.xml gen-entity

3. サービスクラスを使用する。

Actionクラスに生成されたサービスクラスをDIする。

例)

public class XxxAction {

    @Resource
    protected XxxService xxxService;

    ...
}

4. テーブル変更

テーブルを変更する場合はエンティティクラスを修正して、S2JDBC-Genを実行する。

  • 以下のコマンドを実行し、ddlを生成する。
    ant -f s2jdbc-gen-build.xml gen-ddl
    「プロジェクトルート/db/バージョン」以下にddlなどが生成される。
  • 以下のコマンドを実行し、変更をデーターベースに反映する。
    ant -f s2jdbc-gen-build.xml migrate

5. トランザクション

  • デフォルトでアクションおよびサービスクラスのpublicメソッドにj2ee.requiredTxインターセプターが適用されている。
  • j2ee.requiredTxインターセプターはメソッド開始前にトランザクションを開始し、メソッドが正常終了した場合はコミット、
    例外が発生した場合はロールバックする。
  • j2ee.requiredTxインターセプターはすでにトランザクションが開始されている場合は そのトランザクションを継続する。
    従って、アクションからサービスを呼び出した場合はアクションがトランザクション境界となる。
  • サービスで発生した例外をアクションでキャッチしても、トランザクションはロールバックされる。
    (インターセプターが適用されているいずれかのメソッドで例外が発生すると必ずロールバックされる。)
  • メソッド単位にトランザクションを変更するには@TransactionAttribute()アノテーションで指定する。

例外を投げずにロールバックする。

javax.transaction.UserTransaction.setRollbackOnly()を実行する。

例)

public class XxxAction {
    @Resource
    protected UserTransaction transaction;

    @Execute
    public String xxx() {
        ・・・

        // ロールバックする。
        transaction.setRollbackOnly();

        ・・・
    }

        ・・・





トップ   編集 凍結解除 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2011-12-27 (火) 03:14:15 (2484d)