11.7.2.2. 트랜잭션 커밋

다음 절차에서는 자카르타 트랜잭션을 사용하여 트랜잭션을 커밋하는 방법을 설명합니다.

사전 요구 사항

트랜잭션을 커밋하려면 먼저 트랜잭션을 시작해야 합니다. 트랜잭션을 시작하는 방법에 대한 자세한 내용은 트랜잭션 시작을 참조하십시오.

  1. UserTransaction 에서 commit() 메서드를 호출합니다.

    UserTransaction 에서 commit() 메서드를 호출하면 ->에서 트랜잭션을 커밋합니다.

    @Inject
    private UserTransaction userTransaction;
    
    public void updateTable(String key, String value) {
        EntityManager entityManager = entityManagerFactory.createEntityManager();
        try {
            userTransaction.begin();
            <!-- Perform some data manipulation using entityManager -->
            ...
            // Commit the transaction
            userTransaction.commit();
        } catch (Exception ex) {
            <!-- Log message or notify Web page -->
            ...
            try {
                userTransaction.rollback();
            } catch (SystemException se) {
                throw new RuntimeException(se);
            }
            throw new RuntimeException(ex);
        } finally {
            entityManager.close();
        }
    }
  2. CMT(컨테이너 관리 트랜잭션)를 사용하는 경우 수동으로 커밋할 필요가 없습니다.

    컨테이너 관리 트랜잭션을 사용하도록 빈을 구성하는 경우 컨테이너는 코드에서 구성하는 주석을 기반으로 사용자의 트랜잭션 라이프사이클을 관리합니다.

    @PersistenceContext
    private EntityManager em;
    
    @TransactionAttribute(TransactionAttributeType.REQUIRED)
    public void updateTable(String key, String value)
      <!-- Perform some data manipulation using entityManager -->
      ...
    }

결과

데이터 소스 커밋 및 트랜잭션이 종료되거나 예외가 발생합니다.

참고

전체 예는 Jakarta Transactions 트랜잭션 예제 를 참조하십시오.