금융에 대한 모든 것

트랜잭션이란?

 트랜잭션이란 여러 개의 작업을 하나의 작업 단위로 묶어서 관리하는 기술입니다. 트랜잭션으로 묶은 작업 중에서 하나라도 잘못되면 이전에 수행한 모든 작업을 취소하고 실행 이전의 상태로 되돌리는데, 이것을 롤백이라고 합니다

 

트랜잭션의 사용 이유

 트랜잭션은 데이터베이스를 수정하는 작업에는 사용해야 되는 기능입니다. 만약 데이터베이스에 값을 추가하고 있는데 갑자기 오류가 나면 일부 값이 누락이 되어 잘못된 데이터가 들어갈 있기 때문입니다. 그래서 오류가 나면 롤백 기능을 이용하여 잘못된 데이터가 추가되지 않도록 해야 합니다.

 

 또한 반드시 번에 동작해야 되는 작업들을 관리하기 위해서도 트랜잭션을 사용합니다

예시

@Transactional
public void Service() {
    minusPoint();
    sendPoint();
    plusPoint();
}

위와 같은 포인트 거래시스템을 생각해봅시다. 포인트를 다른 사람에게 전송하기 위해 minusPoint 메서드로  포인트를 차감하고 sendPoint 포인트를 보내는 과정에서 오류가 나면 포인트는 전송되지도 않고 사라지는 경우가 생깁니다. 그렇기 때문에 트랜잭션을 이용하여 해당 메서드가 전부 완료되거나 실행되기 이전으로 돌려놓는  가지 경우로 만들어 완성도를 높일  있습니다.

 

 

 

트랜잭션 xml 파일 설정

 

 

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/>

그다음 트랜잭션 관련  설정 코드를 붙여 넣기 합니다.

 

@Transactional 사용

예시

@Service
public class BoardServiceImpl implements BoardService {

    @Override
    @Transactional
    public List<BoardVO> insertBoardList() throws Exception {
        boardMapper.insertBoardList();
    }  
 }

설정이 끝나면 트랜잭션을 적용하고 싶은 메서드에 @Transactional 붙여주면 됩니다.

반응형