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()
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(); } }
3. Containertransaktion
Containertransaktionwird 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!