@JFinal 波总,请教一下,我在一个action中需要同时处理两个数据源的数据,然后同时成功才提交,有一个失败就都回滚,有什么方式可以实现吗?
Db.tx(() -> { Db.use("ds1").update("update t1 set f1 = ?", 123); Db.use("ds2").update("update t2 set f2 = ?", 456); return true; });
比如上面代码,如果只有 ds2 成功了,ds1失败了(默认主数据源是ds1),是不是ds2不能回滚了。
项目:JFinal
"分布式事务" 很麻烦,而且性能不高,如果一定要支持的话,找一找中间件,例如 sharding jdbc , 搜索一下,或者问一下 chat gpt "sharding jdbc 分布式事务"。
专业的人干专业的事,分布式事务交给这些成熟的中间件去解决。 这类组件对开发是透明的,配置好之后,给 jfinal 的仍然是数据源,jfinal 这边代码不变