ssh中事物问题

永远的幸福a 2013-12-20 05:29:10
今天小弟做了一个测试,就是在ssh项目中使用aop方式添加事物,我发现当我操作一张表的时候事物是可以生效的,就想银行转账,这个其实就是一张表,两个用户的修改。这样事物正常发挥作用,但是,当如果在一个serviceImpl业务逻辑中如果是操作两张表,而且这个逻辑类引用的是两个dao。我发现这个时候事物好像不起作用,我猜想应该是他们是不同的dao在操作,可能使用的是不同的session.如果真的有这种需求就是要么同时让两张表的数据同时操作,要么同时失效。怎么弄。我想不用框架这个应该是可以实现的,让他们的session保持同一个就好,但是在ssh中怎么去控制他们的session一致呢。求大家给解答。
...全文
645 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
sxax 2014-01-03
  • 打赏
  • 举报
回复
当你程序在提交成功的时候事务就是完成提交,不管你调用多少个Dao都不会被看成有多个Session 所以不是两个Dao的事情
eighthroute 2013-12-31
  • 打赏
  • 举报
回复
这个要看你用的是hibernate还是jdbc了 。。。还有就是把事务最好放在service层。。。
tony4geek 2013-12-30
  • 打赏
  • 举报
回复
没统一成一个。
告辞c 2013-12-30
  • 打赏
  • 举报
回复
引用 2 楼 webwiki 的回复:
跟Session没关系。。。在serviceImpl的方法上添加事务传播属性Required,spring就会将该方法的操作当成一个事务提交了。
2楼正解,我们一般的事物是设在service层调用dao层那里,就是说。在执行这个service方法之前spring 自动帮你开启事物,执行完成之后自动帮你关闭事物,并提交回滚。 如果事物是设置在dao层中就要看你设置的事物的传播方式。不然spring会当做是2个事物的方式处理
coolbamboo2008 2013-12-28
  • 打赏
  • 举报
回复
应该没有被当成一个事务,你应该在把两个事务都调用的那个方法加事务的注解
April_CH 2013-12-25
  • 打赏
  • 举报
回复
在声明式事务中,事务加在service层,在一个service方法中的session就应该是同一个 这要看你怎么获取的session,如果直接获取的HibernateDaoSupport的getSession或getSessionFactory().openSession即使是在事务中,事务也不会生效的。 通过hibernateTemplate模板方法或回调方法更新数据库就没问题了
webwiki 2013-12-25
  • 打赏
  • 举报
回复
跟Session没关系。。。在serviceImpl的方法上添加事务传播属性Required,spring就会将该方法的操作当成一个事务提交了。
  • 打赏
  • 举报
回复
有一种事务锁啊

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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