1. 程式人生 > >撩課-JavaWeb之事務與批處理

撩課-JavaWeb之事務與批處理

事務

事務問題

建立一張個人賬戶表
zs與ls進行轉賬

    1.檢查zs賬戶餘額
    2.減少zs賬戶1000
    3.增加ls賬戶1000

    示例如下:

出現異常情況
  在第2步和第3步之間弄一個異常 int a = 1 / 0;
  一個人的賬戶減少,另一個沒有加

處理事務

預設情況下, 事務是自動提交的
要設定為手動提交
處理事務過程

 關閉自動提交
	conn.setAutoCommit(false);

 沒有問題時,提交事務 
	conn.commit();

 出現異常時,進行回滾操作
	conn.rollback()

 回滾之後,事務結束。釋放資源
 出現異常,沒有提交,也不會更新資料庫,但是會佔用資源
	 ew to-d
 所以要出現異常時,進行回滾操作
 只有增、冊、改才需要事務,查詢不需要事務
 以後發現自己寫的程式碼是正確的,測試也成功,
但是資料庫當中的資料不變

 事務沒有提交
 InnoDB才支援外來鍵和事務。MyISAM不支援外來鍵和事務

 示例如下:

設定事務的隔離級別


	conn.setTransactionIsolation(Connection.TRANSACTION_REPATABLE_READ)

批處理

什麼是批處理?

一次性執行多條Sql語句,允許多條語句一次性提交給資料庫批量處理
比單獨提交處理要效率高

批處理方法

addBatch(String)
新增需要批處理的sql語句
executeBatch()
執批處理

支援情況
mysql預設情況下是不支援批處理的
從5.1.13開始,添加了一個rewriteBatchedStatement引數
之前插入10條資料要17.4秒
從5.1.13開始提高到了1.6秒


示例:

新增引數: