я использую Spring + Hibernate для настольного приложения.
Я пытаюсь построить его с многоуровневой реализацией, поэтому у меня есть:
Уровень графического интерфейса --call -> Уровень обслуживания --call -> Уровень DAO
Небольшой пример, чтобы лучше объяснить мою ситуацию:
// In GUI layer
private void actionPerformed(ActionEvent evt){
addUser();
}
private void addUser(){
// Check gui validation for user inputs
if(inputIsValid()){
String username=nameText.getText();
String pass=passText.getText();
//Now call service layer
userService.createUser(username, pass);
// Now here i want to show a message to user like
// "Operation successful" or "Operation failed"
// or more sofisticated message like "User with same name already exists"
}
}
// Service layer
@Transactional
public void createUser(String name, String pass){
User user=new User(name, pass);
userDao.save(user);
}
// Another service layer example,
@Transactional
public boolean createUser(String name, String pass){
User user=new User(name, pass);
try{
userDao.save(user);
}
catch(Exception ex){
Log(ex);
return false;
}
return true;
// In this case GUI layer can know if save is succesful, but it can't know WHY
// the save is failed : some username? DB service shutdown? etc..
}
Проблема в том, кто выдает исключение и кто его обрабатывает?
Я думаю, что DAO должен выдать первое исключение, и сервисный уровень перебросит его, и, наконец, исключение обработчика GUI-уровня, чтобы я мог показать сообщение пользователю, это хорошо?
Есть ли способ построить какой-нибудь ExceptionHandler, используя spring?
Как лучше всего управлять исключениями с помощью Spring + Hibernate?
Спасибо.