06/11 Spring 스프링 트랜잭션 2 (전파모드, Isolation 고립성)
SUPPORTS
-> 두개 이상의 문장을 실행하고 있음에도 불구하고 Supports로 하면
트랜잭션을 물고들어오면 유지하는데 지원하겠고 , 나 혼자서는 트랜잭션 안지키겠다 (원자성 안지킴)
REQUIRED
-> 트랜잭션을 물고들어오면 유지하는데 지원하겠고 , 나 혼자서도 트랜잭션 지키겠다
(기본옵션) 전파옵션 설정하지 않으면 알아서 선택되는 옵션임
REQUIRED_NEW
-> 물고들어오는 트랜잭션 ? 모르겠고 내꺼는 새로운 트랜잭션 만듬
NOT_SUPPORTED
-> 트랜잭션 지원 안할거임
NEVER
-> 트랜잭션 하면 에러낼거임! 문제일으킬거임!
MANDATORY
-> 트랜잭션 물고 들어오지 않으면 화낼거임 / 나혼자는 트랜잭션 마련하지 않을거임
나를 호출하는 녀석은 트랜잭션을 무조건 가지고 있어야 함 (독단적으로 사용되지 않음)
NESTED
-> 트랜잭션을 중첩해서 실행함
이제 고립도에 관련해서....
지원되는 고립도 수준은 네가지 정도
1. READ UNCOMMITTED (Dirty reads are allowed)
-> dirty read를 읽는다고 함
2. READ COMMITTED (Phenomenon can occur)
-> Phenomenon가 발생함 - dirty read는 발생하지 않지만
3. REPEATABLE READ (Phanotom reads can occur) - 기본옵션
-> Phanotom 가 발생
내가 읽어들인 행에 대해서 락을 거는 것
4. SERIALIZABLE
-> 테이블 전체를 락을 걸어버림( 고립도 끝판왕 - 성능되게 안좋음)
ex) 내가 화장실쓸거니까 이 건물에 들어오지마