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