https://www.inflearn.com/course/스프링-db-1/
2. 트랙잭션의 이해
트랙잭션 - 개념 이해
- 데이터를 DB에 저장하는 이유는 트랙잭션이라는 개념을 지원하기 때문이다.
- 트랙잭션 : 하나의 거래를 안전하게 처리하도록 보장해주는 것을 뜻함
- 트랙잭션 ACID : 원자성, 일관성, 격리성, 지속성
- 격리성은 동시성과 관련된 성능 이슈로 인해 트랙잭션 격리 수준을 선택할 수 있다. - 트랙잭션 격리 수준 - isolation level (ansi 표준)
- READ UNCOMMITED, READ COMMITED, REPEATBLE READ, SERIALIZABLE
데이터베이스 연결 구조와 DB 세션
- DB의 커넥션이 연결되면 세션을 만들고, 해당 세션에서 SQL을 시작한다.
- 커넥션풀이 커넥션을 10개 만들면, 세션도 10개 만든다.
트랙잭션 - DB 예제1,2,3,4 - 개념이해 & 자동 커밋, 수동 커밋 & 트랙잭션 실습 & 계좌 이체
- 트랙잭션 사용법
- 커밋을 호출하기 전까지 임시로 데이터를 저장하는 것 - 자동커밋
- 기본적으로 자동커밋이 Default
- 각각의 쿼리 실행 직후에 자동으로 커밋을 호출한다.
- 우리가 원하는 트랙잭션 기능을 제대로 사용할 수 없다. - 수동 커밋
- set autocmmit false;
- 수동 커밋 모드로 설정하는 것이 트랙잭션의 시작
DB 락 - 개념 이해 & 변경 & 조회
- 락을 획득해야 트랙잭션을 통해 데이터를 바꿀 수 있다.
- 다른 세션이 데이터를 변경하려면 락을 기다리게 되는데, 타임아웃이 있어서 타임아웃 오류가 발생할 수도 있다 - 데이터를 조회할때도 락을 획득하고 싶을 때가 있다.
- select for update 구문을 사용하자
- 필요 이유 : 트랙잭션 종료 시점까지 해당 데이터를 다른곳에서 변경하지 못하도록 강제로 막아야함 - 트랙잭션과 락은 데이터베이스마다 실제 동작하는 방식이 조금 다르기 때문에 확인 후 사용해야한다.
트랙잭션 - 적용1 & 적용2
- 트랙잭션 어노테이션을 쓰지 않으면 autocommit이 된다.
- 트랙잭션을 시작하려면 커넥션이 필요하다.
- 애플리케이션에서 DB 트랙잭션을 사용하려면 "트랙잭션을 사용하는 동안 같은 커넥션을 유지" 해야 한다.
- 유지하기 위한 가장 간단한 방법은 커넥션을 파라미터로 전달해서 같은 커넥션이 사용되도록 유지하는 것
- 커넥션을 close 할때 setautocommit 관한 설정이 해제하지 않으면 false 인 상태로 돌아가게 된다.
'Spring' 카테고리의 다른 글
[Spring] 스프링 DB 1편 - 데이터 접근 핵심 원리 - 4 (0) | 2022.10.28 |
---|---|
[Spring] 스프링 DB 1편 - 데이터 접근 핵심 원리 - 3 (1) | 2022.10.01 |
[Spring] 스프링 DB 1편 - 데이터 접근 핵심 원리 - 1 (0) | 2022.06.06 |
[Spring] ThymeLeaf 정리 - 1 (0) | 2021.11.22 |
[Spring] 실전! Querydsl - 3 (0) | 2021.09.13 |