Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 인프런
- 그리디
- 스프링 핵심 기능
- Servlet
- SpringBoot
- spring
- 스프링
- kotlin
- 알고리즘
- Greedy
- transaction
- jpa
- Proxy
- Thymeleaf
- Android
- java
- Exception
- Spring Boot
- springdatajpa
- AOP
- 자바
- db
- JPQL
- http
- QueryDSL
- 김영한
- 백준
- 스프링 핵심 원리
- pointcut
- JDBC
Archives
- Today
- Total
개발자되기 프로젝트
트랜잭션 - DB 예제3 - 트랜잭션 실습 본문
1. 기본 데이터 입력
먼저 H2 데이터베이스 웹 콘솔 창을 2개 열어두자.
주의!
H2 데이터베이스 웹 콘솔 창을 2개 열때 기존 URL을 복사하면 안된다.
꼭 http://localhost:8082 를 직접 입력해서 완전히 새로운 세션에서 연결하도록 하자.
URL을 복사하면 같은 세션( jsessionId )에서 실행되어서 원하는 결과가 나오지 않을 수 있다
기본 데이터
데이터 초기화 SQL
//데이터 초기화
set autocommit true;
delete from member;
insert into member(member_id, money) values ('oldId',10000);
2. 신규 데이터 추가 - commit 전
세션1에서 신규 데이터를 추가해보자. 아직 커밋은 하지 않을 것이다.
세션1 신규 데이터 추가
//트랜잭션 시작
set autocommit false; //수동 커밋 모드
insert into member(member_id, money) values ('newId1',10000);
insert into member(member_id, money) values ('newId2',10000);
세션1과 세션2에서 member를 조회해 보자.
- 아직 세션1이 커밋을 하지 않은 상태이기 때문에 세션1에서는 입력한 데이터가 보이지만,
- 세션2에서는 입력한 데이터가 보이지 않는 것을 확인할 수 있다.
3. 신규 데이터 추가 - commit 후
세션1에서 commit을 하자.
commit; //데이터베이스에 반영
세션1과 세션2에서 member를 조회해보자.
- 결과를 이미지와 비교해보자.
- 세션1이 트랜잭션을 커밋했기 때문에 데이터베이스에 실제 데이터가 반영된다.
- 커밋 이후에는 모든 세션에서 데이터를 조회할 수 있다.
4. 롤백 - rollback
데이터 초기화
기본 데이터
데이터 초기화 SQL
//데이터 초기화
set autocommit true;
delete from member;
insert into member(member_id, money) values ('oldId',10000);
세션1 데이터 추가
//트랜잭션 시작
set autocommit false; //수동 커밋 모드
insert into member(member_id, money) values ('newId1',10000);
insert into member(member_id, money) values ('newId2',10000);
세션1과 세션2에서 member를 조회해 보자.
- 세션1에서 아직 commit을 안했기 때문에 세션2에서 볼 수 없다.
세션1에서 rollback
rollback; //롤백으로 데이터베이스에 변경 사항을 반영하지 않는다.
세션1과 세션2에서 member를 조회해 보자.
- 롤백으로 데이터가 DB에 반영되지 않은 것을 확인할 수 있다.
'인프런 > [인프런] 스프링 DB 1편 - 데이터 접근 핵심 원리' 카테고리의 다른 글
DB 락 - 개념 이해 (0) | 2022.06.01 |
---|---|
트랜잭션 - DB 예제4 - 계좌이체 (0) | 2022.06.01 |
트랜잭션 - DB 예제2 - 자동 커밋, 수동 커밋 (0) | 2022.06.01 |
트랜잭션 - DB 예제1 - 개념 이해 (0) | 2022.06.01 |
데이터베이스 연결 구조와 DB 세션 (0) | 2022.06.01 |
Comments