ActiveObjects おためし#4

それでは今日は An Easier Java ORM Part 3 (http://www.codecommit.com/blog/java/an-easier-java... を読んでみます。

この回のネタは

  • サポート対象データベース
  • トランザクション

です。
サポート対象データベース
正式サポートはこちら。
  • Derby (standalone and embedded)
  • MySQL
  • PostgreSQL
  • Oracle (with the limitation that @AutoIncrement is only supported on primary keys)

ほとんどテストされてないけどプロバイダクラスは用意されてるよってのがこっち。
  • Microsoft SQL Server (Microsoft and JTDS providers)
  • HSQLDB (standalone and embedded)

ActiveObjects の利用シーンを考えると HSQLDB は結構ありそう (特に開発中) なので正式にサポートしてもらえるとうれしいですね。このへんは JSE6 になれば Derby 一色になってりするんだろうか。(OSX 版早く出てこい)
トランザクション
では続いてトランザクション。

トランザクションは net.java.ao.Transaction クラスの run を実装して定義します。Transaction#execute() は下記の処理を実行します。run メソッド内が一つのトランザクションになります。
  1. getConnection()
  2. run() の中を実行
  3. commit()

サンプルはこちら。
new Transaction(manager) {
    public void run() {
        Account david = getEntityManager().get(Account.class, 1);
        david.setValue(david.getValue() - 1000);
        david.save();

        Account mary = getEntityManager().get(Account.class, 2);
        mary.setValue(mary.getValue() + 1000);
        mary.save();
    }
}.execute();
ブログエントリには execute() のかわりに executeConcurrently() を実行しているサンプルもありますが、このメソッドはバージョン 0.5 にはありません。(どこで存在したか不明。ただの例かな?)

今回はここまで。

このページへのコメント

vuGGfh I really enjoy the blog post.Really looking forward to read more. Awesome.

0
Posted by seo thing 2013年12月21日(土) 01:58:11 返信

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Wiki内検索

Menu

ここは自由に編集できるエリアです。

管理人/副管理人のみ編集できます