即時通訊使用spring + hibernate作爲桌面應用程序。何處以及如何處理spring + hibernate異常?
我試圖用分層的實現建造它,所以我有:
GUI層--call - >服務層--call - > DAO層
小例如,以更好地exaplain我的情況:
// 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層處理異常,所以我可以向用戶顯示消息,這是好的嗎? 有一種方法可以使用spring來構建一些ExceptionHandler嗎?
使用spring + hibernate管理異常的最佳做法是什麼?
謝謝。