일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 스프링
- jquery
- Java
- IntelliJ
- 프로그래머스
- error
- db
- 함수
- 에러
- GitHub
- Security
- Git
- JavaScript
- oracle
- 자바
- JPA
- aws
- 시큐리티
- 생성
- 쿼리
- 방법
- 알고리즘
- mybatis
- Eclipse
- kotlin
- 넥사크로
- Vue
- 코틀린
- Spring
- 오라클
- Today
- Total
목록트랜잭션 (3)
송민준의 개발노트
보호되어 있는 글입니다.
우선 쓰레드가 뭔지 알아야함. 간략하게 정리하자면 프로세스가 운영체제로부터 할당 받는 작업 단위인데 쓰레드는 하나의 프로세스가 할당 받는 자원을 이용하는 작업 단위임. ThreadLocal 글자 그대로 쓰레드의 지역변수임. 오직 한 쓰레드에 의해 읽고 쓰여질 수 있는 변수를 생성할 수 있도록 함. - 목적 : 쓰레드라는 scope 내에서 공유되어 사용될 수 있는 값으로 다른 쓰레드에서 공유변수를 접근할 시 발생할 수 있는 동시성 문제의 예방을 위해 만들어졌다. - 특징 1) ThreadLocal은 변수 타입을 다루기 쉽도록 제너릭으로 생성 가능함 2) 값을 세팅한 Thread만 접근할 수 있음. 모든 Thread가 사용할 수 있는 쓰레드로컬 초기값은 없지만 initialValue() 메소드를 오버라이딩 ..
* 사용 시 주의사항 @Transactional 을 클래스 또는 메소드 레벨에 명시하면 해당 메서드 호출 시 지정된 트랜잭션에 작동하게 된다. 단 조건이 있다. 해당 클래스의 Bean을 다른 클래스의 Bean에서 호출할 때만 @Transactional을 인지하고 작동하게 된다. ( 같은 빈 내에서는 작동하지 않음), Spring은 내부적으로 AOP를 통해 어노테이션을 인지해서 프록시 생성을 하여 트랜잭션을 자동으로 관리하기 때문임. 1. 트랜잭션의 성질 1) 원자성(Atomicity) - 한 트랜잭션 내에 실행한 작업들은 하나로 간주한다. 즉 모두 성공 또는 실패 2) 일관성(Consistency) - 트랜잭션은 일관성 있는 데이터베이스 상태를 유지한다. 3) 격리성(isolation) - 동시에 실행되..