Ejb-transactions
提供:Dev Guides
EJB-トランザクション
トランザクションは、ACIDプロパティに従う作業アイテムの単一ユニットです。 ACIDは、Atomic、Consistent、Isolated、Durableの略です。
- アトミック-ワークアイテムのいずれかが失敗した場合、ユニット全体が失敗したと見なされます。 成功とは、すべてのアイテムが正常に実行されることを意味します。
- 一貫性-トランザクションは、システムを一貫した状態に保つ必要があります。
- 分離-各トランザクションは、他のトランザクションとは無関係に実行されます。
- 耐久性-トランザクションは、実行またはコミットされた場合、システム障害に耐える必要があります。
EJBコンテナ/サーバーはトランザクションサーバーであり、トランザクションコンテキストの伝播と分散トランザクションを処理します。 トランザクションは、コンテナまたはBeanのコードのカスタムコード処理によって管理できます。
- Container Managed Transactions -このタイプでは、コンテナーがトランザクションの状態を管理します。
- * Bean Managed Transactions-このタイプでは、開発者はトランザクション状態のライフサイクルを管理します。
コンテナ管理トランザクション
EJB 3.0は、EJBコンテナが実装するトランザクションの次の属性を指定しました-
- 必須-ビジネスメソッドをトランザクション内で実行する必要があることを示します。そうしないと、そのメソッドに対して新しいトランザクションが開始されます。
- REQUIRES_NEW -新しいトランザクションがビジネスメソッドに対して開始されることを示します。
- SUPPORTS -ビジネスメソッドがトランザクションの一部として実行されることを示します。
- NOT_SUPPORTED -ビジネスメソッドをトランザクションの一部として実行しないことを示します。
- 必須-ビジネスメソッドがトランザクションの一部として実行されることを示し、そうでない場合は例外がスローされます。
- NEVER -ビジネスメソッドがトランザクションの一部として実行される場合、例外がスローされます。
例
createUserDetail()ビジネスメソッドは、Requiredアノテーションを使用してRequiredになります。
createUser()ビジネスメソッドはcreateUserDetail()を使用しています。 createUser()呼び出し中に例外が発生し、Userオブジェクトが作成されない場合、UserDetailオブジェクトも作成されません。
Bean管理トランザクション
Bean Managed Transactionsでは、アプリケーションレベルで例外を処理することでトランザクションを管理できます。
考慮すべき重要な点は次のとおりです-
- 開始-ビジネスメソッドでいつトランザクションを開始するか。
- 成功-トランザクションをコミットするときの成功シナリオを特定します。
- Failed -トランザクションをロールバックする場合の障害シナリオを特定します。
例
この例では、 UserTransaction インターフェイスを使用して、* userTransaction.begin()メソッド呼び出しを使用してトランザクションの開始をマークしました。 * userTransaction.commit()*メソッドを使用してトランザクションの完了をマークし、トランザクション中に例外が発生した場合は、 userTransaction.rollback()*メソッド呼び出しを使用してトランザクション全体をロールバックします。