데이터베이스 접속을 시작으로, 여러 작업을 수행한 후 접속 종료까지의 전체 기간을 의미한다.
🕹 세션 안에는 여러개의 트랜잭션이 존재할수 있으며(하나 이상의), 일반적으로 데이터베이스는 여러 곳에서 동시에 접근이 가능하기 때문에 많은 세션이 동시에 연결될수 있다.
🕹 세션은 데이터가 변경, 삭제가 확정될때까지 해당 데이터 조작을 분리처리함으로써 데이터와 테이블과의 관계를 보존하는 역할을 한다.
🕹 특정 세션에서 조작중인 데이터는 Transaction이 ⚡️commit 되기 전까지 다른 세션에서 조작할 수 없다.
A transaction is a sequence of one or more SQL operations that are treated as a unit.
어떠한 하나의 기능을 수행하는 SQL문이라고 생각하면쉽다. 각 트랜젝션은 외부와 고립된 상태로 수행되며, 만약 시스템 실패시 각 트랜젝션은 성공과 실패 값만 가지게 된다.
트랜젝션의 개념은 크게 2가지의 근심에서부터 정의되었다.
🤔첫번째, 여러 클라이언트들이 데이터베이스에 동시에 접속을 한다면?
🤔두번째, 만약 데이터 입출력과정에서 시스템이 실패한다면?
이러한 두가지 상황에서부터 데이터를 보존하기위해 위해 ⚡️ACID 라는 특성을 가지고 있다.
A: Atomicity (원자성)
C: Consistency (일관성)
I: Isolation (고립성)
D: Durability (내구성)
최소단위의 하나의 작업이 수행되어야한다. 절대로 반쪽 자리 작업은 허용치 않는다.🤘
오직 시스템에서 허용된 값만 받아 드린다. 만약 허용되지않은 데이터 조작을 시도한다면 시스템이 거절함으로써 데이터의 일관성을 지킨다.😎
트랜젝션이 커밋되기전까지 아무도 데이터의 변경사항을 확인할 수 없다. 데이터 조작은 고립된 상태에서만 진행한다.🥺
한번 커밋된 데이터는 변경되지 않는다.😚
reference
https://developer.jboss.org/docs/DOC-13951
https://stackoverflow.com/questions/10521947/what-is-a-database-session