트랜잭션 템플릿

Spring/Spring DB
2023. 10. 3. 17:30
목차
  1. 트랜잭션 템플릿
728x90

 

트랜잭션 사용 코드

트랜잭션을 사용하는 로직을 살펴보면 위 사진과 같은 패턴이 반복된다.

 

트랜잭션을 시작하고, 비즈니스 로직 실행하고, 성공하면 커밋, 예외가 발생해서 실패하면 롤백

다른 서비스에서 트랜잭션을 시작하려면 try, catch, finally를 포함한 성공시 커밋, 실패시 롤백 코드가 반복될 것이다.

 

→ 트랜잭션 템플릿을 적용해서 반복되는 코드를 해결해 보자

 

트랜잭션 템플릿

템플릿 콜백 패턴을 적용하려면 템플릿을 제공하는 클래스를 작성해야하는데, 스프링은 TransactionTemplate 라는 템플릿 클래스를 제공한다.

 

public class TransactionTemplate {
private PlatformTransactionManager transactionManager;
public <T> T execute(TransactionCallback<T> action){..}
void executeWithoutResult(Consumer<TransactionStatus> action){..}
}
  • execute() : 응답 값이 있을 때 사용한다.
  • executeWithoutResult() : 응답 값이 없을 때 사용한다.

 

서비스 로직에 트랜잭션 템플릿을 적용해보면

private final TransactionTemplate txTemplate;
this.txTemplate = new TransactionTemplate(transactionManager);

TransactionTemplate 을 사용하려면 transactionManager 가 필요하다. 생성자에서 transactionManager 를 주입 받으면서 TransactionTemplate 을 생성했다.

 

트랜잭션 템플릿 사용 로직을 보면 (accountTransfer)

트랜잭션 템플릿 덕분에 트랜잭션을 시작하고, 커밋하거나 롤백하는 코드가 모두 제거되었다.

 

트랜잭션 템플릿의 기본 동작

  • 비즈니스 로직이 정상 수행되면 커밋한다.
  • 언체크 예외가 발생하면 롤백한다. 그 외의 경우 커밋한다. (체크 예외의 경우에는 커밋하는데, 이 부분 은 뒤에서 설명한다.)
728x90

'Spring > Spring DB' 카테고리의 다른 글

트랜잭션 AOP 이해  (0) 2023.10.04
스프링 부트의 자동 리소스 등록  (0) 2023.10.03
트랜잭션 추상화  (0) 2023.10.03
트랜잭션 동기화  (0) 2023.10.03
JDBC에 의존하는 트랜잭션을 적용하면서 나타나는 문제점  (0) 2023.10.03
  1. 트랜잭션 템플릿
'Spring/Spring DB' 카테고리의 다른 글
  • 트랜잭션 AOP 이해
  • 스프링 부트의 자동 리소스 등록
  • 트랜잭션 추상화
  • 트랜잭션 동기화
hapBday
hapBday
hapBday
개발자로 성장하기 위한 기록들
hapBday
전체
오늘
어제
  • 분류 전체보기 (203)
    • CS (12)
      • 컴퓨터네트워크 (11)
      • 운영체제 (0)
      • 분산 시스템 (0)
      • 데이터베이스 (1)
    • Spring (47)
      • Spring 핵심 원리 (13)
      • Spring MVC (15)
      • Spring DB (12)
      • Spring Security (6)
    • JPA (14)
    • 알고리즘 (30)
      • 프로그래머스 (6)
      • 백준 (20)
    • Design Pattern (0)
    • 언어 (5)
      • JAVA (5)
    • ASAC 웹 풀스택 (38)
      • Spring Boot (21)
      • React (0)
      • DevOps (8)
    • 트러블슈팅 (15)
    • DevOps (5)
      • Docker (5)
    • ETC (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • github

공지사항

인기 글

태그

  • MVC
  • 김영한
  • basicerrorcontroller
  • 구현
  • Java
  • 티스토리챌린지
  • S3
  • 프로그래머스
  • JPA
  • currency control
  • 3-layerd 아키텍쳐 패턴
  • aws lambda
  • spring security
  • Spring
  • spring boot
  • docker best practices
  • docker
  • multi-stage
  • x-lock
  • 백준
  • CORS
  • Session
  • 오블완
  • CSRF
  • 트랜잭션
  • jwt
  • cookie
  • s-lock
  • 인프런
  • docker workflow

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.3.0
hapBday
트랜잭션 템플릿
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.