2009-08-05 20 views
4

このメソッドには、@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)を使用する必要があります。多くのデータを返すメソッドがあります。メソッドはJPAクエリーを実行し、テーブルの全内容(約1000行)をロードします。EJB 3読み取り専用メソッドのトランザクション属性

+0

ステートレスBeanは、1000行を返すか、ちょうど処理しますか? –

+0

は、データベースからロードして戻ります。 –

答えて

3

この方法のクライアントは、すでにトランザクション内にありますか? NotSupportedを使用すると、発信者トランザクションは中断されます。そうでない場合は、トランザクションタイプとしてNeverを入力してください。呼び出し元がトランザクション内からこのメソッドを呼び出すことは想定されていないので、決して良いことはありません。よりストレートな契約。

さらに処理を行うメソッドにはNeverを使用します。これにより、開発者はすでにトランザクションに関与している場合でも、コールしないようにすることができます。それが役に立てば幸い。

2

ほとんどの場合、ユーザがの取引に参加していないことがあるので、私は同意しないでください。すべてのシステム。最良の方法はで、サポートされていないを使用して、呼び出し元がすでにトランザクションに入っている場合にトランザクションが一時停止されるようにします。 NO TRANSACTIONスコープ内にある一連の呼び出しがない限り、決して面倒です。一言で言えば、サポートされていないタイプは使用するタイプではありません。

関連する問題