NutzCN Logo
问答 我想在一个事物中操作多个数据源。在service层中还是dao层
发布于 2886天前 作者 sdw1213 3206 次浏览 复制 上一个帖子 下一个帖子
标签:

Servlet3.0结合nuzt中,都是一个dao操作一个数据源,但是现在我需要将数据插入到mysql的一个数据库1中a表,同时插入到数据库2中的b表,改如何操作啊。一个dao,里面总不能写2个操作数据源的方法吧。还是在service层进行操作的

6 回复

如果很多类似这样的代码, 写个Dao层抽象一下, 如果很少, 直接在service里面写

daoA.insert(xxx);
daoB.insert(yyyy);

@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 专门操作一个数据源的。这样写可以吗?

@wendal 好的。有问题再请教

添加回复
请先登陆
回到顶部