원문 : https://getinthere.tistory.com/27 (새창)
영상 : 너튜브 (새창)
겟인데어 님의 윈도우 강좌를 맥으로 해보면서 시행착오를 적습니다.
1. 오라클
read commit
2. MySQL
repeatable read
둘은 select시에 트랜잭션을 걸게 되면 차이가 들어난다. 무슨 차이가 있는지 살펴보자.
PHANTOM READ (데이터가 보였다 안보였다)
-> 정합성이 깨짐
3. 스프링부트의 트랜잭션
- 세션의 시작은 서블릿이 시작되는 시점 부터~ (세션은 영속성 컨텍스트를 포함)
- 트랜잭션의 시작은 서비스 레이어부터, JDBC 커넥션도 이 시점부터.
- 트랜잭션의 종료는 서비스 계층에서 종료, JDBC 커넥션도 이 시점 부터 종료.
- 세션은 컨트롤러 영역까지 끌고 가기 때문에 영속성이 보장되어 select가 가능해지고 lazy-loading이 가능해진다.
댓글
댓글 쓰기