第4章 アノテーションを使用した JTA の宣言的トランザクション管理


アノテーションに基づいて JTA トランザクションを自動的に開始およびコミットすることで、コンテナーがトランザクション境界を設定できます。以下の章は、JTA トランザクションを管理し、@Transactional アノテーションを使用してトランザクション境界を定義する方法を示しています。

4.1. トランザクション境界の宣言的定義

@Transactional を使用して、メソッドレベルまたはクラスレベルでの CDI Bean でトランザクション境界を制御し、すべてのメソッドがトランザクションによるものであることを確認できます。これは REST エンドポイントにも適用されます。

手順

  • エントリーメソッドで @Transactional アノテーションを使用してトランザクションのスコープを定義します。

    例: src/main/java/org/acme/SantaClauseService.java

    import javax.inject.Inject;
    import javax.enterprise.context.ApplicationScoped;
    import javax.transaction.Transactional;
    
    @ApplicationScoped
    public class SantaClausService {
    
        @Inject ChildDAO childDAO;
        @Inject SantaClausDAO santaDAO;
    
        @Transactional 
    1
    
        public void getAGiftFromSanta(Child child, String giftDescription) {
            // some transaction work
            Gift gift = childDAO.addToGiftList(child, giftDescription);
            if (gift == null) {
                throw new OMGGiftNotRecognizedException(); 
    2
    
            }
            else {
                santaDAO.addToSantaTodoList(gift);
            }
        }
    }
    Copy to Clipboard Toggle word wrap

    1
    @Transactional アノテーションはトランザクション境界を定義し、この呼び出しをトランザクション内でラップします。
    2
    RuntimeException がトランザクション境界を超えると、トランザクションマネージャーはトランザクションをロールバックします。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat