트랜잭션

조예빈·2024년 5월 20일
0

Spring

목록 보기
11/19

Transaction(트랜잭션)

  • 여러 개의 DML 명령문을 하나의 논리적인 작업 단위로 묶어서 관리하는 것
  • All || Nothing
  • 스프링은 트랜잭션 기능을 마이바티스 기능과 연동해서 사용
    1. 설정 파일에서 설정하는 방식 (XML -> 트랜잭션 설정이 아니라 트랜잭션을 사용하기 위해 설정하는 것
    2. 어노테이션으로 적용하는 방식)
  • 각 단위 기능 수행 시 이와 관련된 데이터베이스 연동 작업을 한꺼번에 묶어서 관리하는 것

웹 애플리케이션에서 묶어서 처리하는 단위 기능

  • 게시판 글 조회 시 해당 글을 조회하는 기능과 조회 수를 갱신하는 기능
  • 쇼핑몰에서 상품 주문 시 주문 상품을 테이블에 등록하는 기능과 주문자의 포인트를 갱신하는 기능
  • 은행에서 송금 시 송금자의 잔고를 갱신하는 기능과 수신자의 잔고를 갱신하는 기능

속성은 아래의 괄호 안에 들어가는 값을 의미함

트랜잭션 속성

속성기능
propagation트랜잭션 전파 규칙 설정. 보통 required로 씀(default값임)
isolation트랜잭션 격리 레벨 설정
readOnly읽기 전용 여부 설정
rollbackFor트랜잭션을 롤백(rollback)할 예외 타입 설정
norollbackFor트랜잭션을 롤백하지 않을 예외 타입 설정
timeout트랜잭션 타임아웃 시간 설정

propagation 속성이 가지는 값

의미
REQUIRED트랜잭션 필요, 진행 중인 트랜잭션이 있는 경우 해당 트랜잭션 사용. 트랜잭션이없으면 새로운 트랜잭션 생성. 디폴트 값
MANDATORY트랜잭션 필요. 진행 중인 트랜잭션이 없는 경우 예외 발생
REQUIRED_NEW항상 새로운 트랜잭션 생성. 잘 사용하지 않음
ROLLBACKFOR디폴트가 runtimeException. 내가 만든 예외가 발생할 때에만 트랜잭션을 동적하도록 할 수 있음
profile
컴퓨터가 이해하는 코드는 바보도 작성할 수 있다. 사람이 이해하도록 작성하는 프로그래머가 진정한 실력자다. -마틴 파울러

0개의 댓글