使用Appfuse时在Struts Action中如何进行事务控制?
Appfuse采用Spring+Hibernate+Struts的架构。
单个Service方法中利用Spring进行了事务控制,但问题是由于业务比较复杂,需要多个service类中的多个方法组合才能进行处理。框架中一个Model对应一个Dao和Service,我并不希望多个Model的Dao和Service之间进行交互,而是各自负责各自的操作。这样就不可避免的需要在Action中进行service方法的组合完成独立的业务操作,但业务操作的事务控制就比较麻烦了。
目前想到的方法有两种:
1、在BaseAction中加入事务控制,但发现这样的话,就不能在Dao中使用Spring的HibernateTemplate,用起来非常麻烦,而且似乎对结构的变动较大,并且感觉这样的话,Spring的作用几乎可以忽略;
2、把Action中业务操作提取出来,写成单独的Service方法,然后利用Spring进行事务控制,这样就需要ref其它的service,和改写现在的大量Action类,工作量较大。
目前倾向于后一种处理,但考虑工作量可能会对项目造成致命性危险,处于评估中。
不知道各位使用Appfuse进行项目开发时是否有更好的方法进行处理?或者根据上面的两种方式给个建议。
在项目之初没有充分考虑业务操作的事务性控制,实在是大失败呀!郁闷中......
进行中。。。