📌 트랜잭션, @Transactional 어노테이션
우선 프로그래밍 공부를 진행하면서 문제점이 없던 날에는 TIL을 작성하지 않았지만 오늘부터는 문시해알이 아닌 공부했던 내용을 작성할 예정이다.
오늘 작성할 내용은 트랜잭션과 Spring의 @Transactional 어노테이션에 대해 작성하겠다.
📖 트랜잭션이란?
트랜잭션은 데이터통신 시스템에서 관리의 대상이 되는 기본적인 정보를 기록한 기본파일에 대해서
추가, 삭제 및 갱신을 가져오도록 하는 행위(거래)를 트랜잭션이라 한다.
쉽게 말하면 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는
한꺼번에 모두 수행되어야 하는 일련의 연산들을 의미한다.
📖 트랜잭션의 특징
● 트랜잭션은 데이터베이스 시스템에서 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위이다.
● 사용자가 시스템에 대한 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업단위이다.
● 하나의 트랜잭션은 Commit되거나 Rollback된다.
📖 트랜잭션의 성질
✔️ Atomicity(원자성)
● 트랜잭션의 연산은 데이터베이스에 모두 반영되든지 전혀 반응되지 않아야한다.
● 트랜잭션 내의 모든 명령은 반드시 완벽히 수행되어야 하며 어느 하나라도 오류가 발생하면 트랜잭션 전부가 취소 되어야 한다.
✔️ Consistency(일관성)
● 트랜잭션이 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 변환한다.
● 트랜잭션 수행 전과 트랜잭션 수행 완료 후의 상태가 같아야 한다.
✔️ Isolation(독립성)
● 둘 이상의 트랜잭션이 동시에 병행 실행되는 경우 하나의 트랜잭션이 실행중이라면 다른 트랜잭션은 연산에 끼어들 수 없다.
✔️ Durablility(지속성)
● 성공적으로 완료된 트랜잭션의 결과는 시스템이 고장나더라도 영구적으로 반영되어야 한다.
📖 트랜잭션의 연산
✔️ Commit(커밋)
● 하나의 트랜잭션이 성공적으로 끝났으며 트랜잭션이 마무리 되었다는 것을 트랜잭션 관리자에게 알리기 위한 연산이다.
✔️ Rollback(롤백)
● 트랜잭션 처리가 비정상적으로 종료된 경우 트랜잭션을 다시 시작하거나 부분적으로 연산한 결과를 취소시켜 되돌린다.
📖@Transactional 이란?
개별 메소드나 클래스에 붙을 수 있는 트랜잭션 특성이다. Transactional 어노테이션은 Spring Framework에서 제공하는 어노테이션이다.
수행하는 작업에 대해 트랜잭션 원칙이 지켜지도록 보장해주는 것으로 직접 객체를 만들지 않고 선언만 해도 이 과정이 적용되므로
선언적 트랜잭션이라고도 표현한다.
📖@Transactional 옵션
✔️ isolation
● 트랜잭션에서 일관성 없는 데이터 허용 수준을 설정하는 값으로 JDBC의 isolation으로 동작한다.
✔️ propagation
● 트랜잭션 수행 중 다른 트랜잭션 수행에 끼치는 영향을 설정하는 값이다.
✔️ noRollbackFor
● 특정 예외가 발생하는 클래스에 대해서는 rollback을 수행하지 않는 옵션이다.
✔️ rollbackFor
● 특정 예외가 발생하는 클래스에 대해 rollback을 수행하는 옵션이다.
✔️ timeout
● 지정한 시간 내 메서드 수행이 완료되지 않는 경우 rollback하는 옵션이다.
✔️ readOnly
● 트랜잭션을 읽기 전용으로 사용한다.
'TIL, WIL > TIL' 카테고리의 다른 글
[회고]B2B-물류관리 및 배송 시스템 (0) | 2024.09.23 |
---|---|
문시해알, 맞왜틀 TIL - 20230623 (0) | 2023.06.23 |
문시해알, 맞왜틀 TIL - 20230526 (0) | 2023.05.26 |
문시해알, 맞왜틀 TIL - 20230525 (1) | 2023.05.25 |
문시해알, 맞왜틀 TIL - 20230524 (1) | 2023.05.24 |