来自单个事务定义的多个事务对象

时间:2018-10-17 07:53:49

标签: java spring-mvc spring-transactions

我需要管理两个数据库的事务,它们都位于不同的服务器上。

我只是好奇的人,在以下片段中,哪个是正确或更有效的。 SNIPPET 2 那是正确的吗?

我们可以通过单个交易定义进行多个交易吗?

SNIPPET 1:多个交易定义

    import com.awzpact.uam.domain.Userdetail;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.jdbc.datasource.DataSourceTransactionManager;
    import org.springframework.stereotype.Service;
    import org.springframework.transaction.TransactionDefinition;
    import org.springframework.transaction.TransactionStatus;
    import org.springframework.transaction.support.DefaultTransactionDefinition;

    /**
     *
     * @author jack
     */
    @Service
    public class NewPayrollService extends BaseN {
        final TransactionDefinition prayasTxnDefinition = new DefaultTransactionDefinition();
        final TransactionDefinition erpTxnDefinition = new DefaultTransactionDefinition();

    public void getSalarayData(final String yearMonth, final String regionId, final String circleId, final Userdetail loginUser){
     final String tableSuffix = yearMonth.substring(4, 6) + yearMonth.substring(0, 4);

     final TransactionStatus prayasTransaction = this.prayasTransactionManager.getTransaction(prayasTxnDefinition);
     final TransactionStatus erpTransaction = this.erpTransactionManager.getTransaction(erpTxnDefinition);

    }


    @Autowired
     DataSourceTransactionManager prayasTransactionManager;

    @Autowired
     DataSourceTransactionManager erpTransactionManager;
    }

SNIPPET 2单一交易定义

import com.awzpact.uam.domain.Userdetail;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.stereotype.Service;
import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.support.DefaultTransactionDefinition;

/**
 *
 * @author jack
 */
@Service
public class NewPayrollService {
    final TransactionDefinition transcationDefinition = new DefaultTransactionDefinition();

public void getSalarayData(final String yearMonth, final String regionId, final String circleId, final Userdetail loginUser){
 final String tableSuffix = yearMonth.substring(4, 6) + yearMonth.substring(0, 4);

 final TransactionStatus prayasTransaction = this.prayasTransactionManager.getTransaction(transcationDefinition);
 final TransactionStatus erpTransaction = this.erpTransactionManager.getTransaction(transcationDefinition);

}


@Autowired
 DataSourceTransactionManager prayasTransactionManager;

@Autowired
 DataSourceTransactionManager erpTransactionManager;
}

0 个答案:

没有答案