
트랜잭션은 "쪼갤 수 없는 업무 처리의 최소 단위"를 말한다. 이 단위 안에는 데이터베이스의 상태를 변화 시키기 위해서 실행되는 작업이 포함된다. ex) SELECT, UPDATE, INSERT, DELETE트랜잭션은 ACID라 하는 원자성, 일관성, 격리성, 지속성을

트랜잭션의 격리성(Isolation)을 완벽히 보장하려면 트랜잭션을 차례대로 실행해야 한다. 이렇게 하면 동시성 처리 성능이 나빠지게 된다. 이런 문제로 인해 트랜잭션의 격리 수준(Isolation Level)을 4단계로 나누어 정의하였다.READ UNCOMMITED(

애플리케이션 로직이 DB 드라이버를 통해 커넥션 조회DB 드라이버가 DB와 TCP/IP 커넥션 연결(3 way handshake 발생)TCP/IP 커넥션이 연결되면 ID, PW 같은 부가정보를 DB에 전송DB는 ID, PW를 통해 인증을 완료한 후 내부에 DB 세션을

DB 커넥션을 획득하는 방법은 DriverManager HikariCP DBCP2 등 다양한 방법이 존재하는데, 이 때 다른 방식으로 변경하면 애플리케이션 코드를 변경해야 하는 문제가 있다.애플리케이션 로직에서 DriverManager 를 통해 커넥션을 획득하다가 Hi

사용자가 애플리케이션 서버나 데이터베이스 접근 툴을 사용해서 데이터베이스 서버에 연결 요청을 하고 커넥션을 맺게 된다. 이때 데이터베이스 서버는 내부에 세션 을 만든다. 커넥션과 세션은 1:1 로 매핑되는듯 하다.개발자가 클라이언트(애플리케이션 서버, 데이터베이스 접근

세션A 에서 트랜잭션을 시작하고 데이터를 수정 후 commit 을 하지 않았는데 세션B 에서 동시에 같은 데이터를 수정하게 되면 여러 문제가 발생한다. 바로 트랜잭션의 원자성이 깨지는 것이다.세션A 가 중간에 rollback 을 하게 되면 세션B 는 잘못된 데이터를 수