2 回答

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

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