第5章 API アプローチを使用したプログラムによる JTA トランザクションの管理


UserTransaction を注入して、トランザクション境界をプログラムで管理できます。以下の章では、API のアプローチを使用して JTA トランザクションを管理し、トランザクション境界を定義する方法を説明します。

5.1. API アプローチを使用したトランザクション境界の定義

その begin()commit()、および rollback() メソッドを呼び出すことにより、UserTransaction を注入し、トランザクション境界を管理できます。

手順

  1. UserTransaction インターフェイスを注入します。

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

    @ApplicationScoped
    public class SantaClausService {
    
        @Inject ChildDAO childDAO;
        @Inject SantaClausDAO santaDAO;
        @Inject UserTransaction transaction;
    }

  2. トランザクションのデマケーションメソッドを使用してトランザクションを制御します。

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

    import javax.transaction.Transactional;
    import javax.inject.Inject;
    import javax.transaction.SystemException;
    import javax.transaction.UserTransaction;
    
    @ApplicationScoped
    public class SantaClausService {
    
        @Inject ChildDAO childDAO;
        @Inject SantaClausDAO santaDAO;
        @Inject UserTransaction transaction;
    
        public void getAGiftFromSanta(Child child, String giftDescription) {
            // some transaction work
            try {
                transaction.begin(); 1
                Gift gift = childDAO.addToGiftList(child, giftDescription);
                santaDAO.addToSantaTodoList(gift);
                transaction.commit();
            }
            catch(SomeException e) {
                // do something on Tx failure
                transaction.rollback(); 2
            }
        }
    }

    1
    transaction.begin()transaction.commit() の間にトランザクションコードを配置します。
    2
    トランザクションを即座に中止します。
    注記

    @Transactional 呼び出しによってトランザクションが開始するメソッドで UserTransaction を使用することはできません。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.