为什么不在ssh的action层做事务处理
2016-06-17 15:48
423 查看
首先我们来看下面一段代码,通常我们在action里面必须做异常处理,而在service层直接抛出异常,下面代码的问题是:
1:如果加上了try{}catch代码,spring发现如果异常不能抛出,事务不能实现回滚 ,spring认为没有异常。
2:直接抛出异常,不使用try catch块又不能跳转error页
想两者都兼备该如何处理呀? 当然是把事务声明加载service层
Java代码
@Transactional(propagation=Propagation.REQUIRED)
public String addFeeByCredit()throws Exception{
/*try {*/
fee.setLrrq(new SimpleDateFormat("yyyy-MM-dd").format(new Date()));
fee.setLrr(getCurrentUserName());
fee.setShzt("0");
fee.setSfrs(0);
successFlag = feeDAO.addCreditFee(fee);
dpt = feeDAO.getDepartment();
/*String s = null;
s.length();*/
return "success";
// } catch (Exception ex) {
// ex.printStackTrace();
// successFlag = false;
// return "error";
// }
}
0
发现如果异常不能抛出,事务不能实现回滚
直接抛出异常,不使用try catch块又不能跳转error页
想两者都兼备该如何处理呀?
Java代码
@Transactional(propagation=Propagation.REQUIRED)
public String addFeeByCredit()throws Exception{
/*try {*/
fee.setLrrq(new SimpleDateFormat("yyyy-MM-dd").format(new Date()));
fee.setLrr(getCurrentUserName());
fee.setShzt("0");
fee.setSfrs(0);
successFlag = feeDAO.addCreditFee(fee);
dpt = feeDAO.getDepartment();
/*String s = null;
s.length();*/
return "success";
// } catch (Exception ex) {
// ex.printStackTrace();
// successFlag = false;
// return "error";
// }
}
1:如果加上了try{}catch代码,spring发现如果异常不能抛出,事务不能实现回滚 ,spring认为没有异常。
2:直接抛出异常,不使用try catch块又不能跳转error页
想两者都兼备该如何处理呀? 当然是把事务声明加载service层
Java代码
@Transactional(propagation=Propagation.REQUIRED)
public String addFeeByCredit()throws Exception{
/*try {*/
fee.setLrrq(new SimpleDateFormat("yyyy-MM-dd").format(new Date()));
fee.setLrr(getCurrentUserName());
fee.setShzt("0");
fee.setSfrs(0);
successFlag = feeDAO.addCreditFee(fee);
dpt = feeDAO.getDepartment();
/*String s = null;
s.length();*/
return "success";
// } catch (Exception ex) {
// ex.printStackTrace();
// successFlag = false;
// return "error";
// }
}
0
关于action中spring事务控制的问题0
发现如果异常不能抛出,事务不能实现回滚 直接抛出异常,不使用try catch块又不能跳转error页
想两者都兼备该如何处理呀?
Java代码
@Transactional(propagation=Propagation.REQUIRED)
public String addFeeByCredit()throws Exception{
/*try {*/
fee.setLrrq(new SimpleDateFormat("yyyy-MM-dd").format(new Date()));
fee.setLrr(getCurrentUserName());
fee.setShzt("0");
fee.setSfrs(0);
successFlag = feeDAO.addCreditFee(fee);
dpt = feeDAO.getDepartment();
/*String s = null;
s.length();*/
return "success";
// } catch (Exception ex) {
// ex.printStackTrace();
// successFlag = false;
// return "error";
// }
}
相关文章推荐
- Linux Generating SSH Keys
- 一个jar包里的网站
- 一个jar包里的网站之文件上传
- 一个jar包里的网站之返回对媒体类型
- Spring和ThreadLocal
- Spring Boot 开发微服务
- Spring AOP动态代理-切面
- Spring整合Quartz(JobDetailBean方式)
- Spring整合Quartz(JobDetailBean方式)
- perl脚本实现限制ssh最大登录次数(支持白名单)
- rsync ssh 数据同步分析
- 模拟Spring的简单实现
- Spring整合WebSocket应用示例(上)
- 搭建SSH时的思考和遇到的几个问题的解决方法
- spring+html5实现安全传输随机数字密码键盘
- Spring中属性注入详解
- 监听器获取Spring配置文件的方法
- SSH框架网上商城项目第9战之添加和更新商品类别功能实现