最近在搞一个新闻系统基于struts2+spring+iBatis,需要用到事务处理
查了一下iBatis文档说可以使用SqlMapClient的startTransaction
但是因为iBatis整合的关系,没有SqlMapClient可以直接调用
而且我是想在service层实现事务处理并且我需要多个Dao使用事务
请高手指点一下,是不是我事务处理不应该在service层使用啊?还有跨Dao(在同一个数据库的多个表,多个connection是肯定的)算是多个数据源吗?
需要直接使用JTA吗?

解决方案 »

  1.   

    spring 是提供了声明式的事务管理的。
    编程式的也可以啊
    public class ProductDao extends SqlMapClientDaoSupport      { 
           //调用getSqlMapClientTemplate().getSqlMapClient()就获得了SqlMapClient
    }================================================================================
    同一个数据库的多个表,自然不是多个数据源,不用JTA
      

  2.   

    来说一下吧,不管你用什么框架,有一点思想你要知道,那就是事务不要放在dao这一层,一定要做在业务层,这样可以协调很多dao一起在事务调用。在你这里就是 service层中,可以使用编程事务,spring中如下运用this.transactionTemplate.execute(new TransactionCallback() {
    public Object doInTransaction(TransactionStatus status) {
                           ...........//这里调用你的dao
    }
    });
      

  3.   

    谢谢fulianglove和lovingprince的指点 有点明白了 
      

  4.   

    谢谢fulianglove和lovingprince的指点 有点明白了