-
transactional & syncronized
transactional이 syncronized보다 범위가 클 경우
트렌젝션이 끝나기 전(commit 처리가 완료되는 시점)에 syncronized가 끝나므로 다른 스레드도 접근할 수 있게 된다 .
그 경우 해당 스레드는 갱신이 되지 않은 데이터를 사용하게 된다.
따라서 transactional이 syncronized보다 범위 클 경우에 동시성 제어가 되지 않을 수도 있다.

transactional이 syncronized보다 범위가 작을 경우
트렌젝션이 끝나도 syncronized가 끝나지 않았으므로 다른 스레드가 접근할 수 없다.
따라서 이 경우에 동시성 문제를 줄일 수 있다.

비관적 락, 낙관적 락
비관적 락은 commit이 완료되면 lock이 풀린다.

낙관적 락은 commit을 호츨할 때 버전을 갱신한다.
낙관적 락은 commit을 날리기 전에 버전을 검사하고 갱신하는 방식이다. 만약 버전이 틀릴 경우에 rollback해서 작업을 다시 시작한다.

'CS > Spring' 카테고리의 다른 글
Spring JPA가 Auto Configuration(자동 설정) 되는 과정 + Connenction, CP (1) 2025.02.27 JPA 개념과 특징 (3) 2025.01.20 spring Batch 5.x (2) - 실습 (1) 2024.09.23 spring Batch (0) 2024.09.16 JPA - ID 생성 전략 (0) 2024.08.26