Мне нужно управлять транзакциями для двух баз данных, и обе они расположены на разных серверах.
Мне просто интересно узнать среди приведенного ниже фрагмента, какой из них правильный или более эффективный.как насчет 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;
}