트랜잭션은 시작 지점과 끝나는 지점이 존재한다.
시작하는 방법은 1가지이지만, 끝나는 방법은 2가지이다.
트랜잭션은 하나의 Connection을 가져와 사용하다가 닫는 사이에서 일어난다.
트랜잭션의 시작과 종료는 Connection 객체를 통해 이루어진다.
전파 속성이란, 이미 트랜잭션이 진행중일 때 추가 트랜잭션 진행을 어떻게 할지 결정하는 것이다.
Spring이 제공하는 선언적 트랜잭션(@Transaction)의 장점 중 하나는 여러 트랜잭션을 묶어서 커다란 하나의 트랜잭션 경계를 만들 수 있다는 것이다!
트랜잭션은 데이터베이스에서 제공하는 기술으로 Connection 객체를 통해 처리한다.
따라서 1개의 Transaction 당 1개의 Connection 객체를 사용한다.
여기서 1개의 Connection 객체의 트랜잭션을 물리 트랜잭션이라고 한다.
스프링의 입장에서 트랜잭션이 하나의 Connection에 여러개일 수 있다.
스프링이 처리하는 트랜잭션 영역을 논리 트래잭션이라고 한다.