• 티스토리 홈
starryeye
  • 프로필사진
    starryeye
    • 분류 전체보기 (189)
      • C++ (17)
      • Java (24)
      • OOP (5)
      • Spring Reactive Stack (12)
        • Reactive Streams (3)
        • Netty (4)
        • Reactor (1)
        • Webflux (3)
        • DB, Cache 연동 (1)
      • Spring (90)
        • Core (17)
        • MVC (33)
        • Client (2)
        • Security (4)
        • DB, Cache 연동 (33)
      • DataBase (12)
        • RDBMS (2)
        • NoSQL (10)
      • Message Broker (6)
      • Web (4)
      • Network (4)
      • 대규모 시스템 설계 (15)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    • 최근 공지
        등록된 공지가 없습니다.
      # Home
      # 공지사항
      #
      # 태그
      # 검색결과
      # 방명록
      • Spring Transaction 4
        2022년 09월 28일
        • starryeye
        • 작성자
        • 2022.09.28.오후10:16
        반응형

        트랜잭션 내부 로직 수행도중... 예외가 터지면 어떻게 될까..?

        예외가 발생할 경우의 트랜잭션 처리에 대해 알아보자..

         

        앞선 @Controller, @Service, @Repository 포스팅에서 잠시 알아보긴 했었다..

        https://starryeye.tistory.com/97

         

        더 자세하게 알아보자..

         

        스프링 트랜잭션 AOP는 예외 종류에 따라 트랜잭션을 커밋하거나 롤백한다.

         

        <참고>

        Java의 예외

        이전 포스팅 https://starryeye.tistory.com/52 참조

         

        언체크 예외(RuntimeException, Error와 그 하위 예외)

        -> 트랜잭션 롤백

         

        체크 예외(Exception과 그 하위 예외)

        -> 트랜잭션 커밋

         

        스프링은 기본적으로 체크 예외는 비즈니스 의미가 있을 때 사용하고,

        언체크 예외(런타임 예외)는 복구 불가능한 예외로 가정한다.

         

        예를 들면..

        사용자가 주문을 하는데 결제 잔고가 부족할 경우의 예외를 생각해보자..

        이 경우는 시스템에 문제가 있어서 발생하는 예외가 아니다.

        시스템은 정상동작이고 비즈니스 상황에서 문제가 있는 경우이다.

        따라서, 이 경우엔 체크 예외로 두고 try-catch 등으로 예외를 잡아서

        다른 로직을 태워야 하는 것이다.

        (주문한 데이터를 보존하고 다른 결제방식으로 유도해야함)

         

        -> 물론.. 예외로 처리하지 않고 어떤 리턴이나 로직으로 처리 해도 된다.

         

         

         

        체크 예외이지만 롤백을 하고싶다?

        -> @Transaction(rollbackFor = 예외클래스명.class) 사용

        그 반대는 noRollbackFor 요소

         

         

         

         

        반응형

        'Spring > DB, Cache 연동' 카테고리의 다른 글

        JPA 핵심 정리 - 정의  (0) 2023.02.22
        Spring Transaction 5  (0) 2022.09.28
        Spring Transaction 3  (0) 2022.09.22
        Spring Transaction 2  (0) 2022.09.22
        Spring Transaction 1  (0) 2022.09.22
        다음글
        다음 글이 없습니다.
        이전글
        이전 글이 없습니다.
        댓글
      조회된 결과가 없습니다.
      스킨 업데이트 안내
      현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
      ("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
      목차
      표시할 목차가 없습니다.
        • 안녕하세요
        • 감사해요
        • 잘있어요

        티스토리툴바

        개인정보

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

        단축키

        내 블로그

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

        블로그 게시글

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

        모든 영역

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

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