Java 在hibernate中保存或更新后返回结果标志的最佳实践?
通常我们不得不使用一些没有返回任何有用信息的方法。如果我在hibernate中调用saveOrUpdate,我不知道它是否已成功执行。 我使用这样的实现,我觉得有点尴尬:Java 在hibernate中保存或更新后返回结果标志的最佳实践?,java,hibernate,Java,Hibernate,通常我们不得不使用一些没有返回任何有用信息的方法。如果我在hibernate中调用saveOrUpdate,我不知道它是否已成功执行。 我使用这样的实现,我觉得有点尴尬: public int saveOrUpdateA(A a) { int resultFlag = 0 ; try { // obtaining session is omitted session.saveOrUpdate(a); resultFlag =
public int saveOrUpdateA(A a) {
int resultFlag = 0 ;
try {
// obtaining session is omitted
session.saveOrUpdate(a);
resultFlag = 1 ;
} catch (Exception e) {
e.printStackTrace();
}
return resultFlag ;
}
你是怎么做到的?有什么好主意吗
应该在DAO层或服务层捕获异常?为什么需要在此处返回任何内容?如果它碰巧不成功,例外情况会告诉你 如果您的调用方法需要一些东西,您可以这样做
public void saveOrUpdateA(A a) throws Exception{
// obtaining session is omitted
session.saveOrUpdate(a);
}
你为什么要在这里退货?如果它碰巧不成功,例外情况会告诉你 如果您的调用方法需要一些东西,您可以这样做
public void saveOrUpdateA(A a) throws Exception{
// obtaining session is omitted
session.saveOrUpdate(a);
}
代码的问题是,您没有冒泡出异常。我们倾向于遵循的规则是:如果有例外,就抛出它。如果没有异常,则它已成功完成。代码的问题是您没有冒泡出现异常。我们倾向于遵循的规则是:如果有例外,就抛出它。如果没有异常,则它已成功完成。没有异常是成功的标志 如果你真的想要指示器,我会选择布尔返回
public boolean saveOrUpdateA(A a) {
boolean success = false;
try {
// obtaining session is omitted
session.saveOrUpdate(a);
success = true;
} catch (Exception e) {
// log it and swallow exception
// calling code has to be sure to check on success flag;
// otherwise it has no idea something went terribly wrong
}
return success ;
}
您的应用程序仍然需要检查返回状态并进行适当的处理,这与处理session.saveOrUpdate引发的潜在异常没有太大区别
public void saveOrUpdateA(A a) throws Exception {
try {
// obtaining session is omitted
session.saveOrUpdate(a);
} catch (Exception e) {
// log it and rethrow; let calling code figure how to handle
throw e;
}
}
缺少异常是成功的标志 如果你真的想要指示器,我会选择布尔返回
public boolean saveOrUpdateA(A a) {
boolean success = false;
try {
// obtaining session is omitted
session.saveOrUpdate(a);
success = true;
} catch (Exception e) {
// log it and swallow exception
// calling code has to be sure to check on success flag;
// otherwise it has no idea something went terribly wrong
}
return success ;
}
您的应用程序仍然需要检查返回状态并进行适当的处理,这与处理session.saveOrUpdate引发的潜在异常没有太大区别
public void saveOrUpdateA(A a) throws Exception {
try {
// obtaining session is omitted
session.saveOrUpdate(a);
} catch (Exception e) {
// log it and rethrow; let calling code figure how to handle
throw e;
}
}
我认为你根本不应该把这个方法包装起来。使用它时请记住,如果出现错误,您将有一个异常。我认为您根本不应该包装这个方法。只需使用它,记住在发生错误时会出现异常。因为有时候,此方法是通过RPC调用的。我可以在java中捕获异常,但在actionscript或javascript中无法捕获异常,我需要一个指示器来向前端显示此方法已成功完成。如果您知道自己在做什么,那么您的版本就可以了。因为有时候,这个方法是通过RPC调用的。我可以在java中捕获异常,但在actionscript或javascript中无法捕获异常,我需要一个指示器来向前端显示此方法已成功完成。如果您知道自己在做什么,那么您的版本就可以了。随你的便。