트랜잭션이란 여러 개의 작업을 하나의 작업 단위로 묶어서 관리하는 기술입니다. 트랜잭션으로 묶은 작업 중에서 하나라도 잘못되면 이전에 수행한 모든 작업을 취소하고 실행 이전의 상태로 되돌리는데, 이것을 롤백이라고 합니다.
트랜잭션은 데이터베이스를 수정하는 작업에는 꼭 사용해야 되는 기능입니다. 만약 데이터베이스에 값을 추가하고 있는데 갑자기 오류가 나면 일부 값이 누락이 되어 잘못된 데이터가 들어갈 수 있기 때문입니다. 그래서 오류가 나면 롤백 기능을 이용하여 잘못된 데이터가 추가되지 않도록 해야 합니다.
또한 반드시 한 번에 동작해야 되는 작업들을 관리하기 위해서도 트랜잭션을 사용합니다.
예시
@Transactional
public void Service() {
minusPoint();
sendPoint();
plusPoint();
}
위와 같은 포인트 거래시스템을 생각해봅시다. 포인트를 다른 사람에게 전송하기 위해 minusPoint 메서드로 내 포인트를 차감하고 sendPoint로 포인트를 보내는 과정에서 오류가 나면 포인트는 전송되지도 않고 사라지는 경우가 생깁니다. 그렇기 때문에 트랜잭션을 이용하여 해당 메서드가 전부 완료되거나 실행되기 이전으로 돌려놓는 두 가지 경우로 만들어 완성도를 높일 수 있습니다.
root.context.xml 에서 namespaces로 들어가 tx를 체크합니다.
root-context.xml
<!-- 트랜잭션 관련 설정 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
<!-- 트랜잭션 어노테이션 인식 -->
<tx:annotation-driven/>
그다음 트랜잭션 관련 빈 설정 코드를 붙여 넣기 합니다.
예시
@Service
public class BoardServiceImpl implements BoardService {
@Override
@Transactional
public List<BoardVO> insertBoardList() throws Exception {
boardMapper.insertBoardList();
}
}
설정이 끝나면 트랜잭션을 적용하고 싶은 메서드에 @Transactional을 붙여주면 됩니다.
[Spring] 스프링 타일즈(tiles) 설정하기 (2) | 2020.12.11 |
---|---|
[Spring] 스프링 시큐리티 사용 설정하기 (0) | 2020.12.11 |
[Spring] 스프링 프로젝트의 기본적인 작동 순서 (0) | 2020.09.30 |
[Spring] 스프링과 마이바티스 연동하기 (0) | 2020.09.28 |
[Spring] 스프링에서 Gson을 이용하여 ajax 응답하기 (0) | 2020.09.27 |