J2ee web程序的service层中的事务怎样处理才比较合理?
目前在一个遗留系统上增加新功能,该系统采用的struts和hibernate,没有使用spring来对service层进行管理。我在增加新功能的时候,业务逻辑放在service层来实现,遇到一个问题:怎样在service层对事务进行合理的控制?
一个service方法中,通常要调用多个dao方法,这时,service的方法才是一个事务单元。
第一个问题:service方法中的每个dao方法共用一个session,还是各用各的?
如果共用一个session,service方法中只要调用HibernateUtils来得到一个session,接着开始事务,然后执行多个dao方法,然后提交事务,关闭session就可以了。
如果各用各的,在service方法中获得事务,然后将session管理放到每个dao方法中,这时,service方法中的事务要跨越多个session,这时必须用JTA实现(查资料所得).
第二个问题:有些情况下,需要把service方法中调用的多个dao方法中的每一个设置成事务单元,这时怎样处理service方法的事务和dao方法的事务?肯定不能是service方法作为一个事务单元,而它调用的每个的每个dao方法也各自处理成一个事务单元吧?