30.8. ローディングプロセス

前項では、いくつかの手順で「エンティティがロードされる場合」というフレーズを使用しています。エンティティを指定した commit オプションおよびトランザクションの現在のステータスにより、エンティティがロードされる時が決まるため、これについては意図的あいまいにしておきました。次項では、commit オプションとローディングプロセスについて説明します。

30.8.1. コミットオプション

ローディングプロセスの中核を成すのは commit オプションであり、これはエンティティのデータの有効期限を制御します。JBoss では、ABCDという 4 つの commit オプションをサポートしています。最初の 3 つは Enterprise JavaBeans 仕様で説明されていますが、最後のものは JBoss に固有のものです。各 commit オプションの詳細は次のとおりです。
  • A: JBoss は、それがデータベースの唯一のユーザーであるとみなします。したがって、JBoss は各トランザクション間のエンティティの現行値をキャッシュ化でき、大幅に性能が向上するでしょう。そのため、JBoss で管理されるデータは JBoss 外では変更できません。たとえば、別のプログラムでデータを変更するか、(JBoss 内であっても) ダイレクト JDBC を利用してデータを変更すると、データベースの状態が矛盾してしまいます。
  • B: JBoss は、データベースのユーザーが複数存在するとみなしますが、トランザクション間のエンティティに関するコンテキスト情報を保持します。 このコンテキスト情報は、エンティンティのローディングを最適化するのに使用されます。これはデフォルトの commit オプションです。
  • C: JBoss は、トランザクションの終わりにすべてのエンティティコンテキスト情報を破棄します。
  • D: これは JBoss 固有の commit オプションです。このオプションは、指定された期間のみデータが有効であるという点を除けば、commit オプション A と似ています。
commit オプションは、jboss.xml ファイルで宣言します。このファイルについて詳しくは 29章JBoss 上の EJB を参照してください。以下の例は、アプリケーション内のすべてのエンティティ bean に対して commit オプションを A に変更しています。

例30.2 jboss.xml Commit オプション宣言

<jboss>
    <container-configurations>
        <container-configuration>
            <container-name>Standard CMP 2.x EntityBean</container-name>
            <commit-option>A</commit-option>
        </container-configuration>
    </container-configurations>
</jboss>