我有一些代碼從表中讀取要發送併發送的郵件列表。自動調用和數據庫回滾
的順序操作如下:
- 設置標誌作爲發送表中
- 進行自動呼叫
- 提交
的原因之前,具有更新自動呼叫是,如果某些事情失敗了,我可以回滾而不進行自動呼叫。但如果是相反的話,我最終會在可能的情況下撥打電話而無法更新記錄(如果db出現問題)。
public class MyDao {
public void doSomethingOnDb() {
try {
// operation 1 : execute an update (setting the letter as sent)
// operation 2 : make automatic call
// operation 3 : commit
}
catch(Exception e) {
// Rollback
}
}
}
我不喜歡這裏要說的是,我把一個功能,使道內自動呼叫,這是不是什麼DAO預期的事情。但是如果我將邏輯分開,我不能確定表格中的國旗是否真實。我們可以撥打電話,無法將標誌更新到db:
public class MyDao {
public void doSomethingOnDb() {
try {
// operation 1 : execute an update (setting the letter as sent)
// operation 2 : commit
}
catch(Exception e) {
// Rollback
}
}
}
public void someOtherMethodSomewhere() {
try {
new MyDao().doSomethingOnDb();
// operation 3 : make the automatic call
}
catch(Exception e) {
}
}
那麼,你會如何做到這一點?還有其他解決方案嗎?
好的,也許創建一個回滾方法然後。但是這樣就不那麼鬆散了 – user1883212