이 글은 인프런 김영한님의 강의를 복습하며 작성한 글입니다. 트랜잭션 커밋 / 롤백 실습 이번 포스팅에서는 H2 DB를 이용해 트랜잭션의 커밋 / 롤백을 확인하려고 한다. 트랜잭션 격리성을 확인하기 위해 두 개의 세션을 만든다. 브라우저 2개를 켜서, 각각 DB에 로그인하면 된다. 이렇게 하면 DB 세션이 두 개 생성됨. 기본 올드 데이터를 만들어준다. 그리고 잘 들어갔는지 각 세션에서 SELECT 쿼리를 통해 확인한다. DB 세션 여러 개 생성의 의미 // 세션1 http://192.168.0.15:8082/login.do?jsessionid=29f1fe9c6178ae0905e3f40bf54f2375 // 세션2 http://192.168.0.15:8082/login.do?jsessionid=29f1f..
이 글은 인프런 김영한님의 강의를 복습하며 작성한 글입니다. 트랜잭션의 이해 앞서 이야기했던 트랜잭션 내용을 DB에서 SQL문을 실제로 작성하며 이해를 해보고자 한다. 이 게시글에서는 하나의 테이블과 두 개의 세션을 이용해, 실제로 어떤게 동작하는지를 살펴본다. 테이블 생성 DROP TABLE MEMBER IF EXISTS; CREATE TABLE MEMBER( MEMBER_ID VARCHAR(10), MONEY INTEGER NOT NULL DEFAULT 0, PRIMARY KEY(MEMBER_ID) ) 다음 SQL 문을 작성해서 두 개의 Column(Member_id, Money)를 가지는 Member 테이블을 만들 수 있다. 초기 데이터 셋팅 INSERT INTO MEMBER(MEMBER_ID, M..
이 글은 인프런 김영한님의 강의를 복습하며 작성한 글입니다. DB 트랜잭션 동작방식 확인 이 게시글에서는 DB 트랜잭션 동작방식을 그림으로 이해를 해보려고 한다. 아래에 관련 내용을 정리했다. 트랜잭션 사용법 데이터 변경 쿼리를 실행했다. 쿼리를 실행한 것은 DB에 변경 결과를 실제로 반영하는 상태는 아니다. DB에 실제 데이터 변경을 반영하기 위해서는 Commit 명령어를 호출해야한다. 실행된 쿼리를 반영하고 싶지 않으면 RollBack 명령어를 호출한다. Commit을 호출하기 전까지 변경된 데이터는 임시로 저장되는 것이다. 따라서 해당 쿼리를 실행한 사용자에게는 변경 정보가 보이지만, 다른 사용자에게는 보이지 않는다. 위의 내용에서 가장 중요하게 여겨봐야 할 부분은 내 입장에서는 적어도 두 가지다...
이 글은 인프런 김영한님의 강의를 복습하며 작성한 글입니다. 데이터베이스 연결 구조와 DB 세션 사용자는 WAS, DB 접근툴을 통해 DB에 접근할 수 있다. 사용자는 DB 서버에 연결 요청을 하고, WAS는 이를 대신해서 DB와 커넥션을 연결해준다. WAS의 커넥션 / DB의 커넥션이 연결되면 DB는 세션을 하나 만들어둔다. 일단 커넥션을 통해 세션이 생성되면 WAS에서 DB로 오는 모든 요청은 DB 세션이 처리하게 된다. 사용자는 DB 세션을 통해 트랜잭션을 시작하고, 트랜잭션을 종료할 수 있다. 또한, 사용자는 DB 세션을 통해 SQL을 실행할 수 있다. 사용자가 커넥션을 닫거나, DB 관리가 세션을 강제 종료 하면 DB세션은 종료된다. 만약 사용자가 사용하던 커넥션이 커녁센 풀에서 온 것이라 커넥..
이 글은 인프런 김영한님의 강의를 복습하며 작성한 글입니다. 우리는 데이터 저장을 위해 트랜잭션을 쓴다 우리는 많은 데이터를 굳이 DB에 저장한다. 파일로 만들어 저장해도 되는데, 굳이 DB에 만들어 저장하는 이유는 무엇일까? 가장 큰 이유는 DB가 '트랜잭션' 개념을 지원하기 때문이다. 그렇다면 트랜잭션이 어떤 것일까? 트랜잭션이란? 트랜잭션은 '거래'를 의미한다. 트랜잭션은 하나의 '거래'를 안전하게 처리하도록 보장해준다는 것을 의미한다. DB는 '트랜잭션을 지원한다'라고 했다. 이 말을 풀어서 설명하면 'DB는 하나의 거래가 안전하게 처리하도록 보장한다'로 풀어쓸 수 있다. 다음의 예시를 생각해보자. 이 예시는 A에서 B로 5000원을 이체시키는 경우다. 이 하나의 일이 이루어지기 위해서는 크게 두..