dtmcli-java
dtmcli-java copied to clipboard
阅读代码发现的4个问题
看了一下Java SDK的源码,发现如下几个问题(由大到小排序)
---大问题---
- 为完成本地事务屏障,私自打开和关闭JDBC链接,导致和原有Spring 的连接/事务管理功能脱钩。实际项目中,用户代码不太可能直接基于指定的JDBC连接执行,一般是基于Spring技术栈提供的更高级的数据访问技术操作,这会导致SDK保证事务屏障的JDBC连接和实际业务的连接并非同一连接。
---小问题---
-
本地事务屏障只支持MySQL
-
不会自动创建barrier表
看了一下Java SDK的源码,发现如下几个问题(由大到小排序)
---大问题---
- 为完成本地事务屏障,私自打开和关闭JDBC链接,导致和原有Spring 的连接/事务管理功能脱钩。实际项目中,用户代码不太可能直接基于指定的JDBC连接执行,一般是基于Spring技术栈提供的更高级的数据访问技术操作,这会导致SDK保证事务屏障的JDBC连接和实际业务的连接并非同一连接。
---小问题---
- 本地事务屏障只支持MySQL
- 不会自动创建barrier表
如果你有好的想法,欢迎提pr 去修改它
看了一下Java SDK的源码,发现如下几个问题(由大到小排序)
---大问题---
- 为完成本地事务屏障,私自打开和关闭JDBC链接,导致和原有Spring 的连接/事务管理功能脱钩。实际项目中,用户代码不太可能直接基于指定的JDBC连接执行,一般是基于Spring技术栈提供的更高级的数据访问技术操作,这会导致SDK保证事务屏障的JDBC连接和实际业务的连接并非同一连接。
---小问题---
- 本地事务屏障只支持MySQL
- 不会自动创建barrier表
- 之前做这块的时候想到了这个问题,但是为了兼容普通版本的dtm-client所以采取了这样的方式,暂时还没想好怎么同时兼容这两种方式。使用一个Connection接口同时来兼容两种方式或许可以,欢迎提pr和我们一起改进。
- 这目前确实是一个问题
- 创建barrier表的sql语句请参考https://github.com/dtm-labs/dtm
编译环境问题的实在没时间去折腾,没有解决完。所以我这边是无法在IDE中编译的
我提了个PR,给出了第一个问题解决方案。
至于第二个问题,可以使用一个Dialect抽象,比常见的SQL的insert ignore操作内置了。