본문 바로가기
Back-End/Spring Boot

트랜잭션

by newny 2023. 9. 4.
반응형

트랜잭션 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

댓글