subimm.log
로그인
subimm.log
로그인
SEB_BE 52일차 - 트랜잭션
subimm_
·
2022년 11월 6일
팔로우
0
springMVC
백엔드
코드스테이츠
0
코드스테이츠
목록 보기
52/83
💡 오늘의 학습목표
트랜잭션
Spring Framework에서의 트랜잭션 처리
📔 트랜잭션(Transaction) 이란?
물리적으로는 여러 개의 작업이지만 논리적으로는 마치 하나의 작업으로 인식해서 전부 성공하던지, 전부 실패하던지 ( All or Nothing )의 둘 중 하나로만 처리되어야 트랜잭션의 의미를 가짐.
📖 ACID 원칙
원자성
(Atomicity)
작업을 더 이상 쪼갤 수 없음
둘 다 실패하던지, 둘 다 성공하던지 하나로만 처리되는 것이 보장되어야 한다.
일관성
(Consistency)
트랜잭션이 에러 없이 성공적으로 종료될 경우, 비즈니스 로직에서 의도하는대로 일관성있게 저장되거나 변경되는 것
격리성
(Isolation)
여러 개의 트랜잭션이 실행될 경우 각각 독립적으로 실행이 되어야 함.
지속성
(Durability)
트랜잭션이 완료되면 그 결과는 지속되어야 한다. (데이터베이스가 종료되어도 데이터는 물리적인 저장소에 저장되어 유지되어야 함)
📖 트랜잭션 커밋(commit)과 롤백(rollback)
커밋
(commit)
모든 작업을 최종적으로 데이터베이스에 반영하는 명령어 (변경된 내용이 데이터베이스에 영구적으로 저장)
commit 명령을 수행하지 않으면 작업의 결과가 데이터베이스에 최종적 반영x
commit 명령을 수행하면, 하나의 트랜잭션 과정은 종료하게 됨.
롤백
(rollback)
롤백은 작업 중 문제가 발생했을 때, 트랜잭션 내에서 수행된 작업들을 취소
트랜잭션 시작 이전의 상태로 되돌아 간다.
커밋 예제
둘 다 insert문 생성되지만 새로고침후 조회하면 1개만 생성됨.
롤백 예제
커밋 이전에 롤백이 실행되어서 저장되지 않음.
📜 JPA의 tx.commit() 내부
JPA API 를 통해 EntityTransaction 객체를 얻어 이 객체(tx)로
tx.commit()
메서드를 호출했을 때 동작 과정
subimm_
코린이의 공부 일지
팔로우
이전 포스트
SEB_BE 51일차 - JPA기반 데이터 액세스 계층3
다음 포스트
SEB_BE 53일차 - 트랜잭션2
0개의 댓글
댓글 작성
관련 채용 정보