반응형

트랜잭션 6

[Spring] REQUIRED, REQUIRES_NEW 옵션과 Try-Catch

스프링에서 트랜잭션을 다루다보면 두 개 이상의 트랜잭션이 서로 합류하는 경우가 존재한다. 이 때, @Transactional의 전파레벨을 적절히 조정하는 것이 중요하다. 스프링 전파레벨에 대한 이해가 부족하다면 아래 글을 읽고 오는 것을 추천한다. 스프링 @Transactional 전파레벨: https://kth990303.tistory.com/385 @Transactional REQUIRES_NEW 롤백 상황: https://kth990303.tistory.com/387 지난 포스팅(387번)에서는 REQUIRES_NEW 전파레벨 옵션일 때 @TransactionalEventListener를 이용하여 자식이 롤백되더라도 부모가 롤백되지 않도록 설정해주었다. 이번 포스팅에서는 try-catch에 대해 살..

[Spring] REQUIRES_NEW 옵션만으론 자식이 롤백될 때 부모도 롤백된다

두 개 이상의 트랜잭션이 합류할 경우, 트랜잭션 전파레벨 옵션 설정으로 트랜잭션을 관리할 수 있다. 특히, 트랜잭션 전파레벨 중 REQUIRED, REQUIRES_NEW는 실제로도 꽤나 자주 쓰이는 옵션이라 알아두면 더더욱 좋다. 전파레벨 옵션에 대해 궁금하다면 아래 글을 살펴보자. https://kth990303.tistory.com/385 [Spring] @Transactional의 전파 레벨에 대해 알아보자 스프링에선 진행중인 트랜잭션에서 다른 트랜잭션이 참여할 때의 합류조건을 설정할 수 있는 Propagation 옵션이 존재한다. DB에서 자체적으로 제공해주는 트랜잭션 격리레벨과 다르게 전파레벨은 kth990303.tistory.com 이번 포스팅에서는 REQUIRES_NEW 전파레벨 옵션에 대해..

[Spring] @Transactional의 전파 레벨에 대해 알아보자

스프링에선 진행중인 트랜잭션에서 다른 트랜잭션이 참여할 때의 합류조건을 설정할 수 있는 Propagation 옵션이 존재한다. DB에서 자체적으로 제공해주는 트랜잭션 격리레벨과 다르게 전파레벨은 스프링에서 개발자들의 편의를 위해 제공해주는 기능이다. 특히, 트랜잭션 격리 레벨과 마찬가지로 전파레벨은 cs 면접에서 자주 물어보는 주제이기도 하므로 잘 학습해두는 것이 좋을 듯하다. 이번 포스팅에선 트랜잭션 전파 레벨에 대해 작성해보도록 하겠다. 트랜잭션 전파 레벨은 총 7가지 트랜잭션 전파레벨에는 총 7가지 종류가 있다. 스프링 문서에 적혀있는 내용을 바탕으로 한 번 살펴보자. REQUIRED: Support a current transaction, create a new one if none exists...

[DB] 트랜잭션의 ACID 성질

트랜잭션 관리는 백엔드 개발자에게 있어서 매우 중요한 일 중 하나이다. 트랜잭션이란 데이터를 다루는 일련의 수행 작업 단위를 의미한다. 예를 들어 A라는 사람이 B라는 사람에게 10만원을 빼앗는 작업을 수행한다고 하자. 이 때 A의 자산은 10만원이 증가해야 되고 B의 자산은 10만원이 감소한 상태로 작업이 완료돼야 한다. 만약, 해당 과정 수행 중에 문제가 생겼다면 아예 작업이 수행되기 전 초기 상태로 되돌아가야 한다. A의 자산은 10만원이 증가됐는데, B의 자산은 그대로인 경우가 존재하면 안된다. 위와 같이 트랜잭션은 데이터를 다루는 작업을 의미하기 때문에 매우 신중하게 관리해야 한다. 그렇기 때문에 트랜잭션은 ACID 성질을 보장해야 한다. ACID 성질이란 무엇일까? 원자성(Atomicity) ..

CS/Database 2022.10.14

[우아한테크코스] 레벨2 레벨로그 인터뷰 후기

우테코에서는 각 레벨이 끝날 때마다, 그 레벨에서 배웠던 내용을 기록하여 제출한다. 그리고 이 내용을 바탕으로 20분동안 크루 4~6명과 함께 코치님 또는 캡틴과 자유롭게 얘기를 나누는 시간을 가진다. 모의 면접이라고 생각하면 된다. 담당코치님은 랜덤으로 배정된다. 나의 경우는 레벨3를 시작하자마자 바로 다음 날에 레벨로그 인터뷰를 진행됐다. 나의 레벨로그 인터뷰를 맡아줄 코치님은 코치님이 아닌, 캡틴 포비였다. 포비와 인터뷰라니... 한 편으론 설레면서 한 편으론 두렵고 긴장되는 마음으로 입장하였다. 내 레벨 로그는 여기서 확인할 수 있다. https://clean-nutria-44b.notion.site/2-42fb806797cf4486bc141fc55e0b7461 레벨2 학습로그 테스트 clean-..

[Spring] @Transactional로 DB 동시성 문제를 방지하자

웹 데이터 애플리케이션을 만들 때, dao에서 sql문으로 db에 접근하고 service에서 dao 메서드들을 이용하여 하나의 트랜잭션을 관리한다. 그런데 만약 이 애플리케이션을 여러 명이서 동시에 사용한다면? 동시성 문제가 발생할 수 있다. 동시성 문제란, 두 개 이상의 세션이 공통된 자원을 읽고 쓸 때 발생할 수 있는 문제를 의미한다. 이번 포스팅에선 이러한 동시성 문제와 트랜잭션에 대해서 알아보고, @Transactional 어노테이션으로 해결하는 방법을 알아볼 것이다. +) 22.10.13. 트랜잭션 격리레벨 설명 수정 및 보충 트랜잭션이란? DBMS에서 데이터를 다루는 작업의 단위를 의미한다. 용어상 정의로는 이해하기 어렵지만, 트랜잭션의 성질을 알아보면 보다 더 쉽게 이해할 수 있을 것이다. ..

1
반응형