Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在hibernate中保存或更新后返回结果标志的最佳实践?_Java_Hibernate - Fatal编程技术网

Java 在hibernate中保存或更新后返回结果标志的最佳实践?

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 =

通常我们不得不使用一些没有返回任何有用信息的方法。如果我在hibernate中调用saveOrUpdate,我不知道它是否已成功执行。 我使用这样的实现,我觉得有点尴尬:

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中无法捕获异常,我需要一个指示器来向前端显示此方法已成功完成。如果您知道自己在做什么,那么您的版本就可以了。随你的便。