반응형
트랜잭션 ACID
원자성(Atomicity) : 원자처럼(원자는 절대 깨지지 않는것 처럼) 마치 하나의 작업인것처럼
일관성(Consistency) : 무결성 제약 조건 항상 만족
격리성(Isolation) : 동시에 같은 데이터를 수정하지 못하도록
지속성(Durability) : 중간에 시스템에 문제가 발생해도 데이터베이스 로그 등을 사용해서 성공한 트랜잭션 내용을 복구해야 함
격리성
완전한 격리성을 보장하려면 직렬처리가 가장 적합하나, 성능이슈가 생기기 때문에 트랜잭션 격리 수준(Isolation level)을 선택할 수 있다.
수동 커밋 모드
set autocommit false;
락(lock)
SET LOCK_TIMEOUT 10000 (10초안에 락을 얻지 못하면 LOCK TIMEOUT 오류 발생됨)
select 문에 락 걸기 (for update)
select * from member where member_id=’memberA’ for update;
트랜잭션 템플릿 기본 동작
- 비즈니스 로직이 정상 수행되면 커밋한다.
- 언체크 예외가 발생하면 롤백한다. 그 외의 경우 커밋한다.
스프링 부트의 데이터 소스 자동등록
application.properties를 통해서 지정한다.
spring.datasource.url=jdbc:h2:tcp://localhost/~/test
spring.datasource.username=sa
spring.datasource.password=
스프링 부트의 트랜잭션 매니저 자동등록
현재 등록된 라이브러리를 보고 판단하여 해당 기술의 매니저를 빈으로 등록한다.
반응형
'Back-End > Spring Boot' 카테고리의 다른 글
JDBC 이해 (0) | 2023.08.30 |
---|---|
파일 업로드 (0) | 2023.08.25 |
스프링 타입 컨버터 (0) | 2023.08.25 |
댓글