当前位置: 代码迷 >> J2EE >> spring声明式事务管理有关问题
  详细解决方案

spring声明式事务管理有关问题

热度:123   发布时间:2016-04-22 01:10:38.0
spring声明式事务管理问题。
用MyEclipse反向工程生成spring式的DAO。一次调用不同dao的方法,是否可以事务管理。例如以下代码,
如果dao1删除不成功,则dao保存操作回滚。
Java code
ApplicationContext context = ScheduleListener.context;WaitstationdefDAO dao = (WaitstationdefDAO) context.getBean("WaitstationdefDAO");            dao.attachDirty(waitStation);SellagentdefDAO dao1 = (SellagentdefDAO) context.getBean("SellagentdefDAO");            Sellagentdef sellAgent = dao1.findById(id);            if(sellAgent==null){            }else{                dao1.delete(sellAgent);            }


------解决方案--------------------
你在哪个方法里面调两个dao,就在哪个方法上面声明事务。没问题的。
------解决方案--------------------
一般还会采取一个service层,用于对多个DAO的操作,事物就加在service层
------解决方案--------------------
只要把你想回滚的操作放在一个事务里就好了。

才不管你一个事务里有多少次db操作呢。。。
------解决方案--------------------
业务层做事务:方法前加@Transactional(rollbackFor = Exception.class)
前提DAO层做一个抛出异常
配置文件设置下
  相关解决方案