본문 바로가기
Spring

[스프링] 트랜잭션

by chu_dw 2023. 8. 4.

● 스프링 트랜잭션 개요

 

트랜잭션

- 전체 로직이 모두 다 반영되거나 도무 반영되지 않은 논리적인 작업의 묶음 (All or Nothing)

- 작업 완료를 커밋, 작업 취소를 롤백 이라 함

- 트랜잭션 기본 원칙

      -> 원자성, 일관성, 고립성, 지속성

 

트랜잭션 경계

- 프리젠테이션 층과 비지니스 층 사이

- 프리젠테이션 층에 공개된 서비스의 메서드가 트랜잭션 시작과 종료

 

● 스프링 트랜잭션

 

스프링 트랜잭션 관리

- aop로 서비스에 트랜잭션 처리를 구현한 어드바이스 적용

- 트랜잭션 관리자와 트랜잭션 어드바이스 이용

 

스프링 트랜잭션 메니저

- 트랜잭션 관리자 : 데이터베이스에 연동 기술에 상관없이 동일한 방식으로 트랜잭션 관리 기능 제공

- PlatformTrandactionManager : 스프링 트랜잭션 처리 중심 인터페이스

- 대표적인 트랜잭션 구현 클래스 : 트랜잭션 시작,종료,롤백 등 정의 정보를 설정

 

트랜잭션 정의 정보

- 전파 속성 : 기존 트랜잭션 있는 상태에서 새로운 트랜잭션 별도로 생성하거나 포함시켜 실행하는 설정

- 독립성 수준 : 하나의 트랜잭션을 수행시 다른 트랜잭션 작업 끼어들지 못하는 정도

- 만료시간 : 트랜잭션 취소되는 시간

- 읽기 전용 상태 : 트랜잭션 내의 처리가 읽기 전용

 

전파속성 (propagation)

- Mandatory :  기존 트랜잭션 존재하면 포함, 존재않하면 예외 발생

- Nested : 기존 트랜잭션 존재하면 포함, 없으면 새로운 트랜잭션 생성

- Never : 기존 트랜잭션 존재하면 예외 발생, 없으면 트래잭션 없이 실행

- Supports : 기존 트랜잭션 존재하면 포함해서 실행, 없으면 트랜잭션 없이 실행

- not_supported : 트랜잭션 없이 실행

- required : 기존 트랜잭션 존재하면 트랜잭션에 포함, 없으면 새로운 트래잭션 생성

- required_new : 항사 새로운 트랜잭션 생성

 

격리 수준 속성 (Isolation)

- Default :  db 설정을 따름, 기본 격리 수준

- Read_uncommited : 다른 트랜잭션에 의해 커밋되지 않은 데이터를 읽을 수 있다.

- Read_commited : 다른 트랜잭션에 의해 커밋된 데이터를 읽을 수 있다.

- Repeatable_read : 트랜잭션 내에서 동일 필드에 대해 처음 읽어 온 데이터와, 두번째 데이터 동일 보장

- Serializable : 가장 높은 격리 수준, 동일한 데이터에 대해 동시에 2개 이상의 트랜잭션이 수행될 수 있다.

 

트랜잭션 기능 사용법

- 트랜잭션 처리 방법 

     -> 선언적 트랜잭션 처리 : xml 설정, 애노테이션 설정

     -> 명시적 트랜잭션 처리 : 소스 코드상 트랜잭션 처리 메서드를 호출 (복잡, 가독성 떨어짐)

 

 

 

 

'Spring' 카테고리의 다른 글

[프로젝트] dto, mapper 개념  (0) 2023.10.27
[스프링] Security  (0) 2023.08.05
[스프링] AOP  (0) 2023.08.02
[스프링] MyBatis  (0) 2023.08.01
[스프링] REST 아키텍처  (0) 2023.08.01