@Transactional 이란?
스프링에서는 트랜잭션 처리를 지원하는데 그중 어노테이션 방식으로 @Transactional을 선언하여
사용하는 방법이 일반적이며, 선언적 트랜잭션이라 부른다
@RequiredArgsConstructor
@Service
@Slf4j
public class CommentJpaService {
public final CommentRepository commentRepository;
public final BoardRepository boardRepository;
@Transactional
public CommentDTO postComment(CommentDTO commentDTO) {
@Transactional 의 역할은?
- 데이터베이스의 상태를 변경하는 작업 또는 한번에 수행되어야 하는 연산들을 의미한다.
- begin, commit 을 자동으로 수행해준다.
- 예외 발생 시 rollback 처리를 자동으로 수행해준다.
- 트랜잭션은 아래와 같은 4가지의 성질을 가지고 있다.
원자성(Atomicity)
- 한 트랜잭션 내에서 실행한 작업들은 하나의 단위로 처리한다. 즉, 모두 성공 또는 모두 실패.
일관성(Consistency)
- 트랜잭션은 일관성 있는 데이터베이스 상태를 유지한다. (data integrity 만족 등.)
격리성(Isolation)
- 동시에 실행되는 트랜잭션들이 서로 영향을 미치지 않도록 격리해야한다.
영속성(Durability)
- 트랜잭션을 성공적으로 마치면 결과가 항상 저장되어야 한다.
(출처 : https://velog.io/@kdhyo/JavaTransactional-Annotation-%EC%95%8C%EA%B3%A0-%EC%93%B0%EC%9E%90-26her30h)
'수업 & 공부 > 용어 정리' 카테고리의 다른 글
54 : [Java] Optional 이란? (추가예정) (2) | 2021.10.26 |
---|---|
52 : @Entity, @Builder, @GeneratedValue (0) | 2021.10.25 |
48 : REST API (2) (0) | 2021.10.13 |
46 : 제네릭 (Generics) (0) | 2021.10.11 |
39 : Springboot (Rest API - @PathVariable ) (0) | 2021.09.30 |