DBMS 데이터를 다루는 논리적인 작업 단위
작업 도중 에러가 발생한다면 작업하기 전으로 되돌리기(Rollback)
모든 작업이 완료되었다면 관리자에게 통보(Commit)
PlatformTranscactionManager
어노테이션(@Transactional. 선언적 트랜잭션)
성질
-ACID
(Atomicity : 원자성: 작업들이 부분적으로 실행되다가 중단되지 않는 것을 보장하는 능력
Consistency: 일관성: 실행을 성공적으로 완료하면 언제나 일관성 있는 DB 상태로 유지하는 것
Isolation: 고립성: 트랜잭션 수행 시 다른 트랜잭션의 연상 작업이 끼어들지 못하도록 보장하는 것
Durability: 지속성: 트랜잭션이 정상적으로 동작한 경우 시스템 고장이나 에러 등에도 데이터가 유실되지 않아야 함
동시성 제어(Currency Control)
갱신 손실(Lost Update): 동시에 갱신하는 상황, A가 갱신한 내용을 B가 바로 갱신하는 경우 A 데이터 무효화
모순성(Inconsistency): A가 여러 항목을 갱신하는 도중에 B가 바뀐 값과 바뀌지 않은 값 두가지를 모두 읽어 데이터 불일치
트랜잭션 고립 수준
오손읽기(Dirty Read): A가 값을 변경하고 커밋하지 않은 상태에서 B가 접근하면 변경된 값을 참고, 이 상황에서 A가 롤백
반복불가능 읽기(Non-Repeatable Read): A가 쿼리를 실행하고 한 번 더 실행하기 전에 B가 접근해서 값을 변경하고 커밋, A는 다른 결과값을 가짐 ((값이 Update 되는 상황)
유령데이터 읽기(Phantom Read): A가 쿼리를 실행하고 한 번 더 실행하기 전에 B가 접근해서 값을 추가했을 경우, A는 다른 결과값을 가짐 (값이 delete, insert 되는 상황)
락(Lock)
공유락(LS, Shared Lock): 읽기 전용
배타락(LX, Exlusive Lock): 읽기, 쓰기
데드락(Deadlock): 두 개 이상의 트랜잭션이 서로 락을 걸고 서로 요청 (교착상태)
트랜잭션 고립 수준 명령어(Transaction Isolation Level Instruction)
트랜잭션과 비슷한 디자인 패턴
커맨드 패턴(Command Pattern) = 메멘토 패턴(Memento Pattern)
'Spring' 카테고리의 다른 글
| EL, JSTL(내용 추가 필요) (0) | 2022.05.16 |
|---|---|
| 텍스트 파일 생성 및 저장 (0) | 2022.05.09 |
| src/main/resources 폴더에 하위 폴더 만들기 (0) | 2022.05.09 |
| 스프링에서 제공하는 AOP사용해보기 (0) | 2022.05.04 |
| AOP(Aspect Oriented Programming) (0) | 2022.05.03 |