코딩은 내일부터

[우테코] 우아한테크코스 생존기 (9)(@Transactional) 본문

우아한 테크 코스(우테코)/우테코 공부

[우테코] 우아한테크코스 생존기 (9)(@Transactional)

zl존 비버 2023. 6. 9. 10:42
728x90

@Transactional

Transaction이란?

하나의 작업 묶음을 의미하고, 이 작업 묶음에 대해 ACID를 보장하도록 한다.

ACID

  • 원자성 : 이 작업 묶음이 실패하면 모두 실패하거나, 성공하면 모두 성공해야 한다.
  • 일관성 : 트랜잭션의 이전, 이후 데이터베이스의 상태는 이전과 같이 유효해야 한다.
  • 고립성 : 모든 트랜잭션은 다른 트랜잭션으로부터 고립되어야 한다.
  • 영속성 : 하나의 트랜잭션이 성공했다면 이후에 어떤 오류가 발생해도 해당 기록은 영구적이어야 한다.

@Transactional 을 메서드에 붙이면 메서드를 Transaction으로 만들어주고, 클래스에 붙이면 모든 메서드를 Transaction으로 만들어준다.

왜 서비스의 메서드를 Transaction으로 관리할까? 서비스의 메서드도 하나의 작업 묶음이기 때문이다. 서비스의 메서드에서 일어나는 모든 영속적인 작업을 Transaction으로 만들어 ACID를 보장하도록 하는 것이다.

Transactional (read=only) 를 붙히는이유

transactional (read=only)가 붙은 메소드는 수정,삭제,생성을 할 수 없고 명시적인 이유로는 이 메소드가 읽기작업만을 수행한다고 볼 수 있어서 가독성을 높일수있습니다.

  1. 트랜잭션 관리 단순화: readOnly = true로 설정한 트랜잭션은 읽기 작업에만 사용됩니다. 따라서 해당 트랜잭션에서는 롤백 및 로그 기록과 같은 추가적인 관리 작업을 수행할 필요가 없습니다. 이로 인해 트랜잭션 관리가 단순화되고 성능이 향상될 수 있습니다.
  • 주의: h2는 read=only을 정의해도 수정,삭제,생성가 가능하다,,,

우테코 이제 방학이당,,,