簡介  java的事務處理,如果對數據庫進行多次操作,每一次的執行或步驟都是一個事務.如果數據庫操作在某一步沒有執行或出現異常而導致事務失敗,這樣有的事務被執行有的就沒有被執行,從而就有了事務的回滾,取消先前的操作.....

編輯本段詳細說明

  Java中使用事務處理,首先要求數據庫支持事務。如使用MySQL的事務功能,就要求MySQL的表類型為Innodb才支持事務。否則,在Java程序中做了commit或rollback,但在數據庫中根本不能生效。
  JavaBean中使用JDBC方式進行事務處理
  public int delete(int sID) {
  dbc = new DataBaseConnection();
  Connection con = dbc.getConnection();
  try {
  con.setAutoCommit(false);// 更改JDBC事務的默認提交方式
  dbc.executeUpdate("delete from xiao where ID=" + sID);
  dbc.executeUpdate("delete from xiao_content where ID=" + sID);
  dbc.executeUpdate("delete from xiao_affix where bylawid=" + sID);
  con.commit();//提交JDBC事務
  con.setAutoCommit(true);// 恢復JDBC事務的默認提交方式
  dbc.close();
  return 1;
  }
  catch (Exception exc) {
  con.rollBack();//回滾JDBC事務
  exc.printStackTrace();
  dbc.close();
  return -1;
  }
  }
  在數據庫操作中,一項事務是指由一條或多條對數據庫更新的sql語句所組成的一個不可分割的工作單元。只有當事務中的所有操作都正常完成了,整個事務才能被提交到數據庫,如果有一項操作沒有完成,就必須撤消整個事務。
  例如在銀行的轉帳事務中,假定張三從自己的帳號上把1000元轉到李四的帳號上,相關的sql語句如下:
  update account set monery=monery-1000 where name='zhangsan'
  update account set monery=monery+1000 where name='lisi'
  這個兩條語句必須作為一個完成的事務來處理。只有當兩條都成功執行了,才能提交這個事務。如果有一句失敗,整個事務必須撤消。
  在connection類中提供了3個控制事務的方法:
  (1) setAutoCommit(Boolean autoCommit):設置是否自動提交事務;
  (2) commit();提交事務;
  (3) rollback();撤消事務;
  在jdbc api中,默認的情況為自動提交事務,也就是說,每一條對數據庫的更新的sql語句代表一項事務,操作成功后,系統自動調用commit()來提交,否則將調用rollback()來撤消事務。
  在jdbc api中,可以通過調用setAutoCommit(false) 來禁止自動提交事務。然后就可以把多條更新數據庫的sql語句做為一個事務,在所有操作完成之后,調用commit()來進行整體提交。倘若其中一項 sql操作失敗,就不會執行commit()方法,而是產生相應的sqlexception,此時就可以捕獲異常代碼塊中調用rollback()方法撤消事務。