我需要管理两个数据库的事务,它们都位于不同的服务器上。
我只是好奇的人,在以下片段中,哪个是正确或更有效的。 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;
}