Rumah  >  Artikel  >  Java  >  Apakah jenis transaksi java dan cara menggunakannya

Apakah jenis transaksi java dan cara menggunakannya

王林
王林ke hadapan
2023-05-08 21:55:211726semak imbas

1. Transaksi JDBC

dikawal oleh objek Sambungan Antara muka Sambungan JDBC menyediakan dua mod transaksi: penyerahan automatik dan penyerahan manual.

 public void setAutoCommit(boolean)
 public boolean getAutoCommit()
 public void commit()
 public void rollback()

JDBC menyediakan sokongan paling asas untuk menggunakan Java untuk melaksanakan operasi transaksi pangkalan data. Penyata SQL berbilang boleh dimasukkan ke dalam transaksi yang sama untuk memastikan sifat ACID mereka.

Mengenai operasi berbilang pangkalan data atau senario pengedaran, transaksi JDBC tidak berkuasa.

Transaksi 2.JTA (Java Transaction API)

JTA ialah aplikasi peringkat tinggi, bebas pelaksanaan, bebas protokol , aplikasi dan pelayan aplikasi boleh menggunakan JTA untuk mengakses transaksi. JTA membenarkan aplikasi melakukan transaksi teragih - mengakses dan mengemas kini data pada dua atau lebih sumber komputer rangkaian, yang boleh diedarkan merentasi pelbagai pangkalan data. Sokongan JTA pemandu JDBC sangat meningkatkan keupayaan capaian data.

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. Urus niaga kontena

Transaksi kontena terutamanya disediakan oleh pelayan aplikasi J2EE Kebanyakan transaksi kontena diselesaikan berdasarkan JTA adalah Berdasarkan JNDI, pelaksanaan API yang agak kompleks.

Atas ialah kandungan terperinci Apakah jenis transaksi java dan cara menggunakannya. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam