Java的事務(wù)管理是非常重要的一部分,可以有效地保護數(shù)據(jù)庫的完整性和一致性。開啟事務(wù)可以保證多個SQL語句的操作是原子性的,而關(guān)閉事務(wù)可以保證所有對數(shù)據(jù)庫的操作都是有效的。
// 開啟事務(wù) Connection conn = null; try { conn = dataSource.getConnection(); conn.setAutoCommit(false); } catch (SQLException e) { e.printStackTrace(); } // 在事務(wù)中執(zhí)行SQL語句 // 關(guān)閉事務(wù) try { conn.commit(); } catch (SQLException e) { e.printStackTrace(); } finally { try { if (conn != null) { conn.setAutoCommit(true); conn.close(); } } catch (SQLException e) { e.printStackTrace(); } }
在上面的代碼中,我們首先通過dataSource獲取一個連接,然后將自動提交設(shè)置為false,這就意味著從這之后我們需要手動控制提交和回滾。在事務(wù)中,我們可以執(zhí)行多個SQL語句,這些操作將被視為一個單元,如果其中任何一個操作失敗,則整個事務(wù)都會被回滾,這樣可以確保數(shù)據(jù)庫的完整性。
在事務(wù)執(zhí)行完成后,我們需要手動提交事務(wù)或回滾事務(wù),如果一切順利,我們將會調(diào)用conn.commit()來提交事務(wù),否則我們需要通過conn.rollback()來回滾事務(wù),回滾會將整個事務(wù)從上一次提交之后的所有操作全部撤銷。最后我們需要將自動提交設(shè)置為true,這樣才能正常關(guān)閉連接。