自己实现的土事务

阅读更多
本文源自他人设计,作者戴神看到请包涵~~

JPA ?两段式提交? No !我们要的是简单、自由!框架的核心代码如类图。

自己实现的土事务_第1张图片

注意:
如果失败策略为默认即抛出异常,则会被 TransactionManager 捕获并触发 rollback() 然后执行一系列的 undo() ;如果失败策略为重试,则异常将被 RetryFailStrategy 自己消化掉,到不了 TransactionManager 这里。


如何使用:
XXBiz

    @Autowired
    private TransactionManager transactionManager;

    @Autowired
    private FailStrategy defaultFailStrategy;

    private void doSomething(final int id) {
        transactionManager.doInTransaction(new TransactionCallback() {
            @Override
            public void doInTransaction(Transaction transaction) {
                transaction.execute(new Operation1(id));
                transaction.execute(new Operation2(id));
                ...
            }
        });
    }

    private class Operation1 implements Operation {
        private final int id;

        public Operation1(int id) {
            this.id = id;
        }

        @Override
        public Object doIt() {
            // insert with id;
            return null;
        }

        @Override
        public void undo() {
            // delete by id;
        }

        @Override
        public FailStrategy getFailStrategy() {
            return defaultFailStrategy;
        }
    }

 
 
  • 自己实现的土事务_第2张图片
  • 大小: 53.6 KB
  • 查看图片附件

你可能感兴趣的:(事务,回调,栈)