撩課-JavaWeb之事務與批處理
阿新 • • 發佈:2018-12-25
事務
事務問題
建立一張個人賬戶表
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秒
示例:
新增引數: