> Java > java지도 시간 > 본문

Java 트랜잭션의 유형과 사용 방법

王林
풀어 주다: 2023-05-08 21:55:21
앞으로
1718명이 탐색했습니다.

1. JDBC 트랜잭션

은 연결 개체에 의해 제어됩니다. JDBC의 연결 인터페이스는 자동 제출과 수동 제출이라는 두 가지 트랜잭션 모드를 제공합니다.

 public void setAutoCommit(boolean)
 public boolean getAutoCommit()
 public void commit()
 public void rollback()
로그인 후 복사

JDBC는 Java를 사용하여 데이터베이스 트랜잭션 작업을 수행하기 위한 가장 기본적인 지원을 제공합니다. ACID 속성을 보장하기 위해 여러 SQL 문을 동일한 트랜잭션에 넣을 수 있습니다.

다중 데이터베이스 작업이나 분산 시나리오의 경우 JDBC 트랜잭션은 무력합니다.

2.JTA(Java Transaction API) transaction

JTA는 구현에 독립적이고 프로토콜에 독립적인 높은 수준의 API입니다. 애플리케이션 및 애플리케이션 서버는 JTA를 사용하여 트랜잭션에 액세스할 수 있습니다. JTA를 사용하면 애플리케이션이 분산 트랜잭션(여러 데이터베이스에 분산될 수 있는 둘 이상의 네트워크 컴퓨터 리소스에 있는 데이터에 액세스하고 업데이트하는)을 수행할 수 있습니다. JDBC 드라이버의 JTA 지원은 데이터 액세스 기능을 크게 향상시킵니다.

public void JtaTransfer() { 
        javax.transaction.UserTransaction tx = null;
        java.sql.Connection conn = null;
         try{ 
             tx = (javax.transaction.UserTransaction) context.lookup("java:comp/UserTransaction");  //取得JTA事务,本例中是由Jboss容器管理
             javax.sql.DataSource ds = (javax.sql.DataSource) context.lookup("java:/XAOracleDS");  //取得数据库连接池,必须有支持XA的数据库、驱动程序  
             tx.begin();
            conn = ds.getConnection();
             // 将自动提交设置为 false,
             //若设置为 true 则数据库将会把每一次数据更新认定为一个事务并自动提交
             conn.setAutoCommit(false);
             stmt = conn.createStatement(); 
             // 将 A 账户中的金额减少 500 
             stmt.execute("\
             update t_account set amount = amount - 500 where account_id = 'A'");
             // 将 B 账户中的金额增加 500 
             stmt.execute("\
             update t_account set amount = amount + 500 where account_id = 'B'");
             // 提交事务
             tx.commit();
             // 事务提交:转账的两步操作同时成功
         } catch(SQLException sqle){            
             try{ 
                 // 发生异常,回滚在本事务中的操做
              tx.rollback();
                 // 事务回滚:转账的两步操作完全撤销
                 stmt.close(); 
                 conn.close(); 
             }catch(Exception ignore){ 
             } 
             sqle.printStackTrace(); 
         } 
     }
로그인 후 복사

3. 컨테이너 트랜잭션

컨테이너 트랜잭션은 주로 J2EE 애플리케이션 서버에서 제공됩니다. 컨테이너 트랜잭션은 대부분 JNDI 기반의 상당히 복잡한 API 구현인 JTA를 기반으로 완료됩니다.

위 내용은 Java 트랜잭션의 유형과 사용 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:yisu.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!