自己实现的土事务

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

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



注意:
如果失败策略为默认即抛出异常,则会被 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<Object> {
        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;
        }
    }


猜你喜欢

转载自dsxwjhf.iteye.com/blog/2290676
今日推荐