2 回答

TA貢獻(xiàn)1795條經(jīng)驗 獲得超7個贊
在符合標(biāo)準(zhǔn)的 JDBC 實現(xiàn)中,您可以使用任一順序:準(zhǔn)備好的語句的生命周期比事務(wù)長,并且在事務(wù)提交后應(yīng)該可以重用。
但是,在準(zhǔn)備語句之前首先禁用自動提交可能更有效,具體取決于驅(qū)動程序和數(shù)據(jù)庫系統(tǒng)。這可能取決于驅(qū)動程序在準(zhǔn)備語句時是否需要事務(wù)。如果驅(qū)動程序在準(zhǔn)備時需要一個事務(wù),那么在準(zhǔn)備這兩個語句的過程中,在準(zhǔn)備之后禁用自動提交可能已經(jīng)啟動(并提交)了一兩個事務(wù),但是如果您在禁用自動提交之后準(zhǔn)備它們,準(zhǔn)備可能會使用與隨后用于實際執(zhí)行的相同事務(wù)。

TA貢獻(xiàn)1712條經(jīng)驗 獲得超3個贊
語句對象可以共享,也可以緩存。所以你提供的代碼沒有問題。只要確保它們被放在 try catch 塊中,所以如果不成功,它將被回滾。
如果不成功,平面事務(wù)將回滾,就像您的情況一樣。嵌套事務(wù)從一個點提交到另一個點,因此只能部分回滾。您可以使用第二段代碼。無需使事務(wù)可序列化,嘗試根據(jù)您是進(jìn)行讀取還是寫入以及您的要求根據(jù)時間戳鎖定。
添加回答
舉報