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

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

王林
王林앞으로
2023-05-08 21:55:211672검색

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으로 문의하시기 바랍니다. 삭제