본문 바로가기

트랜잭션2

@Transactional의 noRollbackFor 속성 대개 Service layer에서, @Transactional 애노테이션을 붙여서 특정 메소드의 작업을 하나의 트랜잭션으로 처리하도록 할 수 있다. 이 때 한 @Transactional 메소드 내부에서 또 다른 @Transactional 메소드를 호출하면, 호출된(callee) 트랜잭션은 호출한(caller) 트랜잭션에 병합된다. 또한 호출된 트랜잭션을 수행하다가 에러가 발생했을 경우, 기본적으로 트랜잭션이 모두 rollback 처리 된다. 때에 따라서는 특정 트랜잭션은 rollback이 일어나지 않도록 하고 싶을 수도 있는데, 이 때 @Transactional의 'noRollbackFor' 라는 속성을 사용할 수 있다. 사용하는 방식은 다음과 같다. @Transactional(noRollbackFor .. 2019. 5. 2.
트랜잭션(Transaction)이란? "하나의 논리적 작업 단위를 구성하는 일련의 연산들의 집합""한 단위를 이루는 일련의 연관된 데이터베이스 연산(조작)" 트랜잭션은 왜 중요할까? 만약 트랜잭션을 하나씩 순차적으로, 한 트랜잭션 끝나고 다음 트랜잭션, ... 과 같이 수행한다면, 프로그램의 속도가 매우 느려질 것이다. DBMS는 CPU보다 I/O 작업을 더 빈번하게 수행하기 때문이다. 따라서 트랜잭션을 순차적으로, 직렬로 수행할수록 CPU가 노는 시간(idle time)이 길어지는 것이고 이는 비효율적이다. 그러니 여러 트랜잭션들을 동시에 수행해야 하는데, 이 때 동시에 수행되는 트랜잭션들이 데이터베이스에 미치는 영향은 순차적으로 수행했을 때 데이터베이스에 미치는 영향과 차이점이 없어야만 한다. 즉 데이터베이스에 저장된 데이터의 무결성은 .. 2019. 3. 3.