트랜잭션 템플릿

wangjh789·2022년 8월 14일
0

[Spring] 스프링-DB-1

목록 보기
10/15

TransactionTemplate

public void accountTransfer(String fromId, String toId, int money) {
        txTemplate.executeWithoutResult((status)->{
            try{
                Member fromMember = memberRepository.findById(fromId);
                Member toMember = memberRepository.findById(toId);

                memberRepository.update(fromId, fromMember.getMoney() - money);
                validation(toMember);

                memberRepository.update(toId, toMember.getMoney() + money);
            } catch (SQLException e) {
                throw new RuntimeException(e);
            }
        });
    }

스프링에서 코드 중복을 막기위해 템플릿 콜백 패턴을 적용한 TransactionTemplate 을 제공한다.

  • 비즈니스 로직이 정상 수행되면 커밋한다.
  • 언체크 예외가 발생하면 롤백하고, 체크 예외의 경우는 커밋한다.

코드의 중복을 줄였지만 아직도 핵심로직과 트랜잭션 부가기능이 코드에 섞여 있다.
트랜잭션 AOP로 문제를 해결하자.

profile
기록

0개의 댓글