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

Apakah jenis transaksi java dan cara menggunakannya

王林
Lepaskan: 2023-05-08 21:55:21
ke hadapan
1740 orang telah melayarinya

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()
Salin selepas log masuk

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(); 
         } 
     }
Salin selepas log masuk

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!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan