我将 spring+hibernate 用于桌面应用程序。
我正在尝试使用分层实现来构建它,所以我有:
GUI层--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 层处理异常,所以我可以向用户显示消息,这样好吗? 有没有办法使用spring构建一些ExceptionHandler?
使用 spring+hibernate 管理异常的最佳做法是什么?
谢谢。
最佳答案
我建议将抛出的异常包装在您自己的异常类中,并让它们冒泡到 GUI 层。
https://stackoverflow.com/questions/4172870/
相关文章:
java - 在没有 Spring 身份验证的情况下通过 web-socket 多次回复
java - QueryDsl 对 Map 字段键的 Web 查询
java - Hibernate 和 PostgreSQL 中具有 UserType 的数组 -->
java - 为什么 PropertyDescriptor 行为从 Java 1.6 更改为 1.7
java - 更改 GET 页面请求上的数据(处理预加载请求)
java - 如何在 Hibernate 中使用临时表批量删除记录?
java - 我可以在 View 层中找到 spring mvc Controller 的 URL
java - Spring 启动 : How to setup test data with liq