반응형

 

 

 

1. Transaction

: 여러 operation들로 이루어 지는 하나의 작업 단위

- database의 상태를 변경(insert, update, delete)

- all or nothing (operation이 하나라도 실패할 경우, 모든 실행 결과를 취소시킴으로써 데이터 무결성 보장)

- ACID 특성을 만족 : Atomicity / Consistency / Isolation / Durability

 

예시 ) 

 

 

 

2. Transaction 처리의 중요성

무결성 제약조건(check)

alter table inventory add constraint c1 check(qty >= 0);

 

-> 트랜잭션으로 구현하지 않았을 경우, check 제약조건 위배로 오류 발생했을 때 이미 삽입 및 변경된 행은 그대로 남아 데이터베이스의 무결성이 훼손된다.

-> 트랜잭션으로 구현될 경우, 변경된 사항이 취소(rollback)된다.

 

 

 

3. Transaction Manager

: 다양한 영속성 기술들을 위한 구현 클래스 제공

 

- JDBC 기반

: DataSourceTransactionManager 이용

: commit(), rollback() 등 호출

 

 

 

4. 스프링의 Transaction 지원

- 선언적 트랜잭션 관리

: 트랜잭션 처리를 코드에서 직접 구현하지 않고 xml 설정 파일이나 annotation을 통해 트랜잭션의 범위와 규칙을 정의

: XML, annotation 이용

1) TransactionProxyFactoryBean

2) <tx:advice>

3) @Transactional

 

 

 

5. transaction 속성

1) Propagation Behavior

 

 

2) Isolation level

: 한 트랜잭션이 동시에 실행중인 다른 트랜잭션의 영향을 얼마나 받았는가를 의미

- dirty reads : 다른 트랜잭션에 의해 변경되었지만, 아직 commit 되지 않은 데이터를 읽는 현상

- non-repeatable reads : 같은 질의를 두 번 이상 할 때 서로 다른 데이터를 얻는 현상

- phantom reads : 여러 데이터 행을 읽은 후 다시 질의를 수행할 때 이전에 없던 데이터를 얻는 현상

 

 

 

 

 

6. @Transactional annotation 이용

: @Transactional 어노테이션이 붙은 모든 class/bean들에 대해 transaction advice를 자동 생성 및 적용

 

 

적용 예 )

* 메소드가 먼저 적용됨

 

 

 

 

 

반응형

'Programming > Spring' 카테고리의 다른 글

Restful하게 API를 구성하자 !  (0) 2021.11.25
12. Spring & JPA  (0) 2021.06.08
10. Spring 기반 RESTful service  (0) 2021.06.07
09. Spring JDBC  (0) 2021.06.01
08. MyBatis  (0) 2021.06.01

+ Recent posts