Java 在同一个方法中需要对两个不同的数据库进行操作

2018-10-23 11:51:27 +08:00
 zhuangzhimin

请问如何实现 1、要求简单,只有部分方法需要,非大规模 2、事务控制怎么处理,如果 1 插入了 2 插入不成功 1 要回滚 3、项目采用的是 spirngbooot+mybatis

2165 次点击
所在节点    问与答
12 条回复
elgae
2018-10-23 11:58:00 +08:00
针对两个数据库操作的代码,分别抽一个方法出来
elgae
2018-10-23 12:02:16 +08:00
@elgae 错了,忽略
p2pCoder
2018-10-23 12:24:06 +08:00
跨库事务,坑很大
尽量拆分成两个服务,rpc 调用
jswh
2018-10-23 12:25:27 +08:00
事务控制只能手动处理了吧。做到极限就做一个自己的 bin log,出错了根据 bin log 回滚。
xmh51
2018-10-23 12:26:33 +08:00
shardingsphere 应该能满足需求,支持简单的异常直接回滚。支持柔性事物
zhuangzhimin
2018-10-23 13:41:22 +08:00
@p2pCoder
@jswh
@xmh51
如果我不保证事务呢,只要在一个方法里面操纵两个数据库
p2pCoder
2018-10-23 14:15:58 +08:00
@zhuangzhimin 你这只要 mybatis 配置多数据源就行
xiaoxinshiwo
2018-10-23 15:16:49 +08:00
xiaoxinshiwo
2018-10-23 15:18:11 +08:00
@zhuangzhimin #6 楼主一定要去看 sharding-jdbc,几年前我也有这个需求,自己实现的,各种调用,代码逻辑十分混乱,现在试用 sharding-jdbc 发现你压根就可以不用感知分库分表的存在
Variazioni
2018-10-23 16:42:24 +08:00
在 mybatis 里配置多数据源。。
然后业务类里手动切换一下就行了。。
我之前也有过类似的需求。
但是对次要数据库操作要求很低。。
所以主数据库用了 mybatis,次要数据库用了自己写的基于 JDBC 的一个小 ORM 框架。。。
zhuangzhimin
2018-10-23 17:16:58 +08:00
@Variazioni 手动切换数据源 怎么手动切换?
Variazioni
2018-10-23 17:20:15 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/500149

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX