Servlet3.0结合nuzt中,都是一个dao操作一个数据源,但是现在我需要将数据插入到mysql的一个数据库1中a表,同时插入到数据库2中的b表,改如何操作啊。一个dao,里面总不能写2个操作数据源的方法吧。还是在service层进行操作的
6 回复
@wendal 这样写如果a表插入成功,2库中的b表插入失败。会回滚吗?
@sdw1213 用Trans.exec包起来
"a表插入成功,2库中的b表插入失败" 看情况. 只要不是在commit阶段出错, 两个数据源是可以同时回滚的.
不能回滚的情况是这样: a数据源执行了commit, b数据源执行commit时出错, 那a没法回滚. 但这种情况很少见.
@wendal 刚注意看了一下。还是在比如daoA的dao层操作不同的数据源?
Trans.exec(new Atom() {
@Override
public void run() {
mediaTotalDAO.execute(value);
mediaTotalDAO.execute(value2);
mediaImprotDataDao.excute(value3);
}
});
这样在一个我这个MediaTotalDAO 专门操作一个数据源的。这样写可以吗?
@sdw1213 可以
@wendal 好的。有问题再请教
添加回复
请先登陆