gpt4 book ai didi

java - 自动调用和数据库回滚

转载 作者:搜寻专家 更新时间:2023-10-30 20:56:37 25 4
gpt4 key购买 nike

我有一些代码可以从表格中读取要发送的邮件列表并发送它们。

顺序操作是:

  1. 将标志设置为在表中发送
  2. 进行自动调用
  3. promise

在自动调用之前进行更新的原因是,如果出现故障,我可以回滚而不进行自动调用。但如果反过来,我可能会遇到无法更新记录(如果数据库出现问题)时调用电话的情况。

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 中放置了一个功能来进行自动调用,而这不是 dao 应该做的事情。但是,如果我将逻辑分开,我就不能真正确定表中的标志是真实的。我们可以进行调用,但无法将标志更新到数据库中:

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) {
}
}

那么,你会怎么做呢?还有其他解决办法吗?

最佳答案

您不能简单地将 DAO 操作分成子方法吗?像这样的东西:

public class MyDao {
public void executeAnUpdate() {...}
public void commit() {...}
}

public class MyBusiness {
public void run() {
myDao.executeAnUpdate();
// make the automatic call
myDao.commit();
}
}

关于java - 自动调用和数据库回滚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18638766/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com