JPA : @Transacitonal 관련 정리

    트랜잭션(Transaction)이란?


    트랜잭션은 우리 말로 '거래'라는 뜻을 가지고 있다. 이것을 중고거래에 빗대어서 한번 살펴보자.

    • 당근마켓에서 선입금을 아이패드를 사기 사기 위해 선입금을 했다.
    • 받았더니 벽돌이었다.

    사기 당했을 때, 입금하기 시점 이전으로 돌릴 수 있는 개념이 바로 트랜잭션이다.

    트랜잭션은 트랜잭션 내의 모든 작업들이 성공적으로 끝이나면, 작업의 결과를 묶음으로 적용한다. 반대로 작업들 중 하나라도 오류가 발생하면, 이전에 있는 모든 작업들이 성공적이었다고 하더라도 모두 없던 일처럼 돌린다.

      데이터베이스에서는 트랜잭션 개념 단위로 일을 처리하게 되고, 모든 작업이 성공해야 데이터베이스에 작업 결과물이 반영될 수 있다.



    @Transactional 어노테이션의 기능

    • tx.begin() , tx.commit() 기능을 수행해준다.
    • 실패 시, rollback 처리를 자동으로 수행해준다.

    일반적으로 JPA를 사용하기 위해서는 트랜잭션 단위로 커밋을 한다. 트랜잭션을 사용하기 위해서는 em.getTransaction()을 통해서 트랜잭션을 가져온 다음에 begin()을 해주어야 한다. 그리고 트랜잭션이 끝나는 시점에 tx.comit()으로 동작을 한다.

    @Transactional을 메서드에 붙여주게 되면 이 모든 기능을 자동으로 다 적용을 해준다. 따라서 개발자의 편의성을 증진시키는 어노테이션이다.

    댓글

    Designed by JB FACTORY