[TIL] 코드스테이츠 SEB BE Day 52

💡 Today I Will Learn

  • Spring에서 트랜잭션 처리

✏️ Check Box


  • Spring에서 트랜잭션 처리

📌 정리


@Transactional 어노테이션으로 트랜잭션을 관리할 경우 체크예외에 대해서는 신경써야한다. 언체크예외와 달리 속성으로 지정해주지 않으면 롤백이 이루어지지 않는 것을 실습을 통해 확인하였다.

알아두어야할 속성 중 Propagation (전파)Isolation Level (격리레벨)이 눈에 들어왔다. 트랜잭션이 진행 중에 어노테이션이 적용된 메서드에 진입했을 때, 동작할 방식을 지정하는 것이 전파였다. Default값은 REQUIRED로 진행중인 트랜잭션에 참여하며 없으면 새로 시작하는 옵션이다.

격리레벨은 ACID 원칙에서 독립성에 관한 속성으로 서로 다른 트랜잭션이 충돌할 때의 동작을 지정하는 옵션이다.

이외에도 AOP를 통한 트랜잭션분산 트랜잭션에 관한 내용들이 담겨있었다. AOP를 통한 트랜잭션은 어노테이션을 통해 충분히 구현해낼 수 있을 것 같아서 우선은 간단히 학습하고 넘어갔다. 분산 트랜잭션은 서로 다른 DB를 하나의 트랜잭션으로 묶을 때 사용한다. 별도의 JTA(Java Transaction API) 매니저가 필요하며 Mysql에서는 Atomikos를 흔히 이용한다. 또한 스케쥴링을 이용하는 Apache NiFi와 같은 기술도 있다고 한다.

🎯 Tomorrow


  • 단위 테스트
  • JUnit
  • 슬라이스 테스트

Back to [TIL] 코드스테이츠 SEB BE Day 51