1. 아래에 대하여 설명하시오.
- 트랜잭션 이란?
- rollback 과 commit 이란?
1-1. 트랜잭션
: 논리적 단위로 여러 개의 작업 단위가 수행될 때 한 작업이 에러가 날 경우 가장 최근에 commit한 시점으로 되돌리는 기능이다.
- 원자성: 트랜잭션의 연상은 DB에 모두 반영되거나 아니면 전혀 반영되지 않아야 한다.
- 일관성: 트랜잭션의 실행을 성공적으로 완료하면 언제나 일관성 있는 DB상태로 변환한다.
- 독립성: 트랜잭션의 여러 연산시 각각 순차적으로 진행이 시작되거나 끝이 나야한다.
- 영속성: 성공적으로 완료된 트랜잭션의 결과는 영구적으로 반영되어야 한다.
1-2-1. rollback
: DB의 데이터가 변경되었어도 최근에 commit한 지점까지 되돌릴 수 있는 기능이다. 단, 테이블을 삭제하는 DROP이나 TRUNCATE의 경우 해당 기능을 쓸 수 없다.
1-2-2. commit
: DB의 데이터가 변경(UPDATE, INSERT, DELETE 등) 되었을경우, 해당 지점까지 저장하는 기능이다.
2. 스프링에서의 트랜잭션 처리 방법은?
트랜잭션의 기능이 있는 어노테이션(@Transactional)을 이용하여 예외발생(Checked Exception) 여지가 있는 코드가 있을 경우 rollback 처리가 되게끔 한다.
@Transactional(rollbackFor = Exception.class)
또한 MVC 패턴에서 Controller 영역 내 한 메소드로 여러 기능을 추가해야 할 경우 가급적이면 Service단에서 트랜젝션을 처리해준다. 이는 Controller단에서 트랜잭션 처리가 안되는 경우가 생길 수 있기 때문이다.
'WebDev > 본과정' 카테고리의 다른 글
목표 지향 프로그래밍 (0) | 2021.05.17 |
---|---|
Spring의 Interceptor와 부트스트랩 프론트엔드 프레임워크 (0) | 2021.05.17 |
RESTful (0) | 2021.05.17 |
AJAX와 JSON (0) | 2021.05.17 |
Mybatis를 이용한 Spring MVC 출력 방법 (0) | 2021.05.16 |
최근댓글