우리는 스프링에서 제공하는 @Transcational을 이용해 여러 작업을 하나의 트랜잭션으로 쉽게 묶어 처리할 수 있다. 또한 스프링에서는 트랜잭션 추상화를 제공할 뿐만 아니라 프로젝트에 사용되는 데이터 접근 기술을 인식해서 적절한 구현체를 빈으로 등록해준다.@Tra
먼저 프록시를 이용한 트랜잭션 처리 과정을 보자.실제 비즈니스 로직은 프록시 객체가 호출하고 있는 것을 확인할 수 있다. 비즈니스 로직에서 @Transactional을 사용하고 있기 때문에 프록시 객체가 생성된 것인데, 만약 서비스 로직 내부에서 @Transaction
트랜잭션은 커넥션을 획득하고, 커밋이나 롤백이 실행되면, 작업이 종료되어 커넥션은 다시 커넥션 풀로 반환된다. 그렇다면 트랜잭션이 이미 진행중인데, 여기서 추가로 트랜잭션을 수행하면 어떻게 될까?기존의 트랜잭션을 이어받아 트랜잭션을 수행해야 할까? 별도의 트랜잭션을 진
이전의 포스팅에서 스프링 트랜잭션 전파에 대해 알아보았다. 스프링 트랜잭션에는 원칙이 있었는데, 논리 트랜잭션중 하나라도 롤백이되면 물리 트랜잭션은 롤백이 되어야 하고, 모든 논리 트랜잭션이 커밋이 되어야 물리 트랜잭션도 커밋이 된다고 하였다.그렇다면 트랜잭션 별로 커
지난 포스팅에서 스프링 트랜잭션 전파에 대해서 알아보았다. 이번 포스팅에서는 문제가 발생했을 때 상황에 따라 트랜잭션 전파를 활용해 해결하는 방법에 대해 알아보자.