项目中的事务处理,急急急!!!

robyjeffding 2009-12-23 05:25:31
我用spring来管理事务,持久层是使用spring提供的JdbcTemplate来做数据操作。
由于项目比较大,通常一个业务就同时包含了增、删、改、查的操作,我想当其中一个操作失败时,其他都回滚,该怎么做?
如果是手动处理事务时,在异常代码处回滚就可以,但使用spring来管理事务,就不知道如何操作了?是向外抛出个异常吗?
请教各位大侠了!!!谢谢
...全文
232 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
robyjeffding 2009-12-24
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 heweiandpippo 的回复:]
引用 2 楼 heweiandpippo 的回复:
你自己查查资料啊 这不难。
首先:需要在配置文件中配置一个事物拦截器。
然后把你的JdbcTemplate模板注入给业务层,在业务层调用dao,这样spring就能自己回滚。

关键是要把配置写对。

在方法中抛出异常就行了,要和你配置文件中的异常对应。
不过事物不是配在dao这层,应该配在业务层,你配在dao层没有意义,根本涉及不到回滚。
[/Quote]
只需要声明异常就可以了吧?
heweiAndPippo 2009-12-24
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 heweiandpippo 的回复:]
你自己查查资料啊 这不难。
首先:需要在配置文件中配置一个事物拦截器。
然后把你的JdbcTemplate模板注入给业务层,在业务层调用dao,这样spring就能自己回滚。

关键是要把配置写对。
[/Quote]
在方法中抛出异常就行了,要和你配置文件中的异常对应。
不过事物不是配在dao这层,应该配在业务层,你配在dao层没有意义,根本涉及不到回滚。
zhao_tk 2009-12-24
  • 打赏
  • 举报
回复
service层调用dao层..就可以了..service中的方法是一个事务,把数据库操作放在一个事务方法中.
长公子冰 2009-12-24
  • 打赏
  • 举报
回复
Spring的事务是基于service层的,你把所有的业务方法都写在一个service方法里,一个失败就全回滚了。先学会用Spring才是王道。
robyjeffding 2009-12-24
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 bolink5 的回复:]
  LZ 去我blog看看吧
  前端时间刚做了Spring的事务处理
[/Quote]
看了你的博客,你在业务方法还是手动捕获了异常,我想要的是异常向外抛出,在业务中并不涉及到异常的手动捕获。
robyjeffding 2009-12-24
  • 打赏
  • 举报
回复
谁发个例子或者相关的链接给我啊,谢了。。。
dongyangmoney 2009-12-24
  • 打赏
  • 举报
回复
mark
deng8818 2009-12-24
  • 打赏
  • 举报
回复
zidasine方案可行。
xuexijava 2009-12-24
  • 打赏
  • 举报
回复
学习加顶
zidasine 2009-12-24
  • 打赏
  • 举报
回复
利用aop控制事务 切入点在业务层

业务层方法出现runtimeException 向上抛出

可以达到回滚 可以参考下spring文档
crazylaa 2009-12-24
  • 打赏
  • 举报
回复
Spring的事务处理还是比较完美的。多看看这方面的例子,baidu、google很多的
bolink5 2009-12-23
  • 打赏
  • 举报
回复
LZ 去我blog看看吧
前端时间刚做了Spring的事务处理
robyjeffding 2009-12-23
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 heweiandpippo 的回复:]
你自己查查资料啊 这不难。
首先:需要在配置文件中配置一个事物拦截器。
然后把你的JdbcTemplate模板注入给业务层,在业务层调用dao,这样spring就能自己回滚。

关键是要把配置写对。
[/Quote]
这些都配置了,处理单个的业务没问题,但就是我说多方面操作时,却不知道怎么去控制了,
比如:
public int saveStudent(){
int flag=0;
//首先要保存班级
MyClass cls=new MyClass("计算机一机");
flag=myClassDao.save(cls);
if(flag>0){//保存成功
//就做保存学生的操作
}else{
//是在这里回滚吗?怎么控制事务
}
}

heweiAndPippo 2009-12-23
  • 打赏
  • 举报
回复
你自己查查资料啊 这不难。
首先:需要在配置文件中配置一个事物拦截器。
然后把你的JdbcTemplate模板注入给业务层,在业务层调用dao,这样spring就能自己回滚。

关键是要把配置写对。
sean1203 2009-12-23
  • 打赏
  • 举报
回复
jf

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧