Heim > Java > javaLernprogramm > Welche Arten von Java-Transaktionen gibt es und wie werden sie verwendet?

Welche Arten von Java-Transaktionen gibt es und wie werden sie verwendet?

王林
Freigeben: 2023-05-08 21:55:21
nach vorne
1769 Leute haben es durchsucht

1.JDBC-Transaktion

Verbindungsobjektsteuerung verwenden, die Verbindungsschnittstelle von JDBC bietet zwei Transaktionsmodi: automatische Übermittlung, manuelle Übermittlung .

 public void setAutoCommit(boolean)
 public boolean getAutoCommit()
 public void commit()
 public void rollback()
Nach dem Login kopieren

JDBC bietet die grundlegendste Unterstützung für die Verwendung von Java zur Durchführung von Datenbanktransaktionsvorgängen. Mehrere SQL-Anweisungen können in dieselbe Transaktion eingefügt werden, um ihre ACID-Eigenschaften sicherzustellen.

Wenn es um Operationen mit mehreren Datenbanken oder verteilte Szenarien geht, sind JDBC-Transaktionen machtlos.

2.JTA (Java Transaction API)-Transaktion

JTA ist eine High-Level-, Implementierungs-unabhängige und A Protokollunabhängige API , die Anwendungen und Anwendungsserver verwenden können, um über JTA auf Transaktionen zuzugreifen. JTA ermöglicht Anwendungen die Durchführung verteilter Transaktionen – den Zugriff auf und die Aktualisierung von Daten auf zwei oder mehr Netzwerkcomputerressourcen, die über mehrere Datenbanken verteilt sein können. Die JTA-Unterstützung des JDBC-Treibers verbessert die Datenzugriffsmöglichkeiten erheblich.

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(); 
         } 
     }
Nach dem Login kopieren

3. Containertransaktion

Containertransaktion

wird hauptsächlich vom J2EE-Anwendungsserver bereitgestellt wird auf Basis von JTA abgeschlossen, einer recht komplexen API-Implementierung auf Basis von JNDI.

Das obige ist der detaillierte Inhalt vonWelche Arten von Java-Transaktionen gibt es und wie werden sie verwendet?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage