Лучше всего возвращать флаг результата после saveOrUpdate в спящем режиме? - PullRequest
0 голосов
/ 11 марта 2010

Часто нам приходится использовать некоторые методы, которые не возвращают ничего полезного. Если я вызываю 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 или уровне службы?

Ответы [ 4 ]

2 голосов
/ 11 марта 2010

Отсутствие исключения является показателем успеха.

Если вы действительно хотите индикатор, я бы пошел на логическое возвращение.

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;
  } 
}
2 голосов
/ 11 марта 2010

Зачем вам здесь что-нибудь возвращать? Если это окажется неудачным, есть исключение, чтобы сообщить вам об этом.

Если вашему вызывающему методу нужно что-то, вы можете просто сделать это следующим образом.

public void saveOrUpdateA(A a) throws Exception{
    // obtaining session is omitted
    session.saveOrUpdate(a);
}
0 голосов
/ 11 марта 2010

Я не думаю, что вы должны обернуть этот метод вообще. Просто используйте его, помня, что у вас будет исключение в случае ошибки.

0 голосов
/ 11 марта 2010

Проблема с кодом заключается в том, что вы не получаете исключение. Правило, которому мы склонны следовать: если есть исключение, подбросьте его. Если исключений нет, значит, оно успешно завершено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...