JPA : @Transacitonal 관련 정리
- Spring/JPA
- 2022. 1. 10.
트랜잭션(Transaction)이란?
트랜잭션은 우리 말로 '거래'라는 뜻을 가지고 있다. 이것을 중고거래에 빗대어서 한번 살펴보자.
- 당근마켓에서 선입금을 아이패드를 사기 사기 위해 선입금을 했다.
- 받았더니 벽돌이었다.
사기 당했을 때, 입금하기 시점 이전으로 돌릴 수 있는 개념이 바로 트랜잭션이다.
트랜잭션은 트랜잭션 내의 모든 작업들이 성공적으로 끝이나면, 작업의 결과를 묶음으로 적용한다. 반대로 작업들 중 하나라도 오류가 발생하면, 이전에 있는 모든 작업들이 성공적이었다고 하더라도 모두 없던 일처럼 돌린다.
데이터베이스에서는 트랜잭션 개념 단위로 일을 처리하게 되고, 모든 작업이 성공해야 데이터베이스에 작업 결과물이 반영될 수 있다.
@Transactional 어노테이션의 기능
- tx.begin() , tx.commit() 기능을 수행해준다.
- 실패 시, rollback 처리를 자동으로 수행해준다.
일반적으로 JPA를 사용하기 위해서는 트랜잭션 단위로 커밋을 한다. 트랜잭션을 사용하기 위해서는 em.getTransaction()을 통해서 트랜잭션을 가져온 다음에 begin()을 해주어야 한다. 그리고 트랜잭션이 끝나는 시점에 tx.comit()으로 동작을 한다.
@Transactional을 메서드에 붙여주게 되면 이 모든 기능을 자동으로 다 적용을 해준다. 따라서 개발자의 편의성을 증진시키는 어노테이션이다.
'Spring > JPA' 카테고리의 다른 글
JPA : JPA를 DTO로 바로 접근하기 (0) | 2022.01.15 |
---|---|
JPA : JPA를 활용한 회원 관련 API 개발 (0) | 2022.01.15 |
JPA 프로젝트를 다시 하면서 정리 (0) | 2022.01.09 |
JPA : Fetch Join (0) | 2021.12.02 |
JPA : CASCADE를 통한 영속성 전이, 고아 객체 (0) | 2021.11.28 |