백엔드 개발자 블로그

@Transaction 본문

테크 블로그 리뷰

@Transaction

backend-dev 2024. 10. 24. 00:32

해당글은 우테코 테크톡을 보고 정리한 글입니다.

https://www.youtube.com/watch?v=taAp_u83MwA


@Transaction 역할

A,B 작업이 하나의 세션으로 할당돼서 하나의 작업으로 처리가 가능해짐

= 바로 반영하지 말고, A,B 모두 정상 처리됐다면 한번에 반영해주세요.

 


문제 상황 : 코드를 통한 트랜잭션 처리 

 

  • 중복 코드가 많아짐 (트랜잭션 관련 코드)
  • 주된 관심사가 아닌 코드가 서비스 레이어에 담김 (트랜잭션 관련 코드)
  • 특정 기술에 종속적인 코드가 되어버린다. (throws SQLException - JDBC   >   JPA는 이거 안씀)

 


문제 해결 방법

Spring AOP = @Transaction

 

  1. 서비스 객체를 상속한 proxy 객체 생성
  2. 매서드 재정의 (트랜잭션 open > 타겟객체를 호출해서 메서드 실행 > 트랜잭션 종료)
  3. Spring bean에 proxy 객체 등록

결과

  • 서비스 객체를 상속받는 프록시 객체가 빈으로 등록했기에 서비스 객체에 DI가 가능
  • 서비스 레이어에 트랜잭션 관련된 코드 분리
  • 특정 기술에 종속된 코드 분리

같이 알아두면 좋은 내용

  • 트랜잭션 매니저
  • 트랜잭션 동기화 매니저
  • AOP
  • JDK Dynamic Proxy
  • CGLIB

 

'테크 블로그 리뷰' 카테고리의 다른 글

멀티쓰레드와 동기화  (0) 2024.10.24
DI  (0) 2024.10.24
프로파일러로 성능 개선시키기  (1) 2024.09.27
서버 증설 없이 대규모 트래픽 처리하기  (0) 2024.07.09
null 리턴은 왜 나쁠까?  (0) 2024.03.13