背景:公司的一个项目的数据访问层是封装 JDBC 自己实现类似 MyBatis 的组件,然后提供 API 给业务层调用,项目是分布式的,并没有实现事务(单库的事务也没有),当然跨服务的事务我们也没好的解决方案,所以业务层很多代码无法做到数据一致性。
问题:现在要求起码实现单库事务,改造了组件开放事务相关 API 给业务层,面临着所有业务层的方法都需要改代码,工程量有些大,现在基于单库事务,能不能在不改造业务层代码的情况下,实现事务呢?
我想到的是利用 AOP 思想在每个方法调用前 openTransaction(),退出方法调用 commit(),抛出异常调用 rollback(),我们项目没用到 Spring 等框架,所以希望各位能给出不借助 Spring 等框架利用 AOP 思想实现事务的方案,多谢。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.