트랜잭션 정의
트랜잭션(Transaction)은 데이터베이스(DB)의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위
또는 한꺼번에 모두 수행되어야 할 일련의 연산들을 의미한다.
트랜잭션 사용 이유
DB에 insert, update 등 작업을 여러번 하게되는 로직이 있을 경우 중간에 실패하게되면 잘못된 값이나 필요없는 값이 저장될 수 있다. 이 경우 트랜잭션을 사용하여 모든 로직이 정상적으로 완료되지 않는다면 Rollback 하거나 모두 완료되야만 Commit 하여 데이터의 잘못된 저장을 막을 수 있다.
스프링에서 사용방법
어노테이션 @Transactional 을 이용할거면 손쉽게 설정 후 사용가능하다.
xml에 아래 내용만 추가해주면 된다.
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/>
주요 속성
isolation
-> Transaction의 isolation Level. 별도로 정의하지 않으면 DB의 Isolation Level을 따름.
ex) @Transactional(isolation=Isolation.DEFAULT)
propagation
-> 트랜잭션 전파규칙을 정의, Default=REQURIED
ex) @Transactional(propagation=Propagation.REQUIRED)
readOnly
-> 해당 Transaction을 읽기 전용 모드로 처리 (Default = false)
ex) @Transactional(readOnly=true)
rollbackFor
-> 정의된 Exception에 대해서는 rollback을 수행
ex) @Transactional(rollbackFor=Exception.class)
noRollbackFor
-> 정의된 Exception에 대해서는 rollback을 수행하지 않음
ex) @Transactional(noRollbackFor=Exception.class)
timeout
-> 지정된 시간 내에 해당 메소드 수행이 완료되지 않은 경우 rollback 수행. -1일 경우 no timeout (Default = -1)
ex) @transactional(timeout=10)
'프로그래밍 > Spring' 카테고리의 다른 글
Spring AOP 간단 개념정리 (0) | 2021.01.26 |
---|---|
web.xml 설정 시 ApplicationContext (0) | 2021.01.19 |
스프링 배치. 그리고 스케줄러, Quartz (0) | 2020.03.26 |
web.xml 간단 정리 (0) | 2019.09.22 |
댓글