스프링 트랜잭션

(。◠ ◠。)·2022년 8월 30일

국비 개발 훈련 일기

목록 보기
28/35


오류를 발생시키게 하면 스프링에서 제공하는 트렌젝션 메니저가
transactionManager.rollback(status);를 처리해줘서
중간에 오류가 날 경우 롤백해줘서 반만 처리되거나 하는 행위를 방지함

@Service
public class BuyTicketService implements IBuyTicketService{
	
	@Autowired
	ITransaction1Dao transaction1;
	
	@Autowired
	ITransaction2Dao transaction2;
	
	@Autowired
	PlatformTransactionManager transactionManager;
	
	@Autowired
	TransactionDefinition definition;
	

	@Override
	public int buy(String consumerId, int amount, String error) {
		
		TransactionStatus status =  transactionManager.getTransaction(definition);
		
			System.out.println(consumerId+amount+error);
		try {
			transaction1.pay(consumerId, amount);
			
			//의도적으로 에러 발생
			if(error.equals("1")) {
				int n = 10/0;
			}
			
			transaction2.pay(consumerId, amount);
			
			transactionManager.commit(status);
			return 1;
			
		}catch(Exception e) {
			System.out.println("[PlatformTransactionManager] Rollback");
			transactionManager.rollback(status);
			return 0;
		}		
	}
}
profile
화이탱!

0개의 댓글