トランザクション属性は、エンタープライズ Bean のメソッドが呼び出されるときに、EJB コンテナがトランザクションスコープを制御するために使用するエンタープライズ Bean の配備記述子の値です。トランザクション属性には、次のものがあります。
- Required - クライアントがトランザクションに関連付けられていない場合、メソッドを実行する前に、コンテナは新しいトランザクションを開始します。関連付けられている場合、メソッドはクライアントのトランザクション内で実行します。
- Requires New - コンテナはいつでも新しいトランザクションを開始し、クライアントがトランザクション内で実行している場合、クライアントのトランザクションを一時停止します。
- Mandatory - メソッドはクライアントのトランザクション内で実行します。メソッドがクライアントのトランザクションを使用する必要がある場合にのみ、この属性を使用します。使用する必要がない場合、コンテナは例外をスローします。
- Not Supported - メソッドはクライアントが生成するトランザクション内でだけ実行するか、あるいはトランザクションなしで実行します。クライアントがトランザクション内ですでに実行中の場合、コンテナはトランザクションを一時停止してメソッドを呼び出し、次にクライアントのトランザクションを再開します。
- Supports - メソッドはクライアントのトランザクション内で実行します。クライアントがトランザクション内で実行中でない場合、コンテナは新しいトランザクションを開始しないでメソッドを実行します。この属性を持つメソッドのトランザクションの動作は予測できないので、トランザクション属性に非常に詳しいユーザー以外は、この属性を使用しないでください。
- Never - メソッドはトランザクション内で実行されません。メソッドを呼び出しているときにトランザクション内でクライアントが実行中の場合、例外がスローされます。