프로젝트를 수행함에 있어 오픈시 가장 크리티컬한 문제이기도 하고 자주 문제가 발생하는 부분인 Transaction 오류에 관련된 내용을 정리해본다. Transaction이 잘 수행되다가 사용자가 몰리면 DB가 죽는경우 Spring Framework를 사용하는 경우라면 Transaction을 Spring Container 안에서 설정을 해야 한다. (선언적 트랜잭션) 선언적 트랜잭션 중 XML 선언방식을 사용할 때 잘못된 예와 잘 설정된 예를 보자면 * 잘못된 예 * 잘 설정된 예 위의 안좋은 예는 현재 모든 서비스 구현체 클래스 안의 모든 메소드에 대해서 트랜잭션을 수행하도록 설정이 되어 있다. 이는 매우 비효율적인 방법으로 성능에 안좋은 영향을 미친다. 조회문이 트랜잭션을 생성한다면 사람이 많아지면 트..
spring에서 transaction propagation 은 전파옵션을 뜻한다. 전파옵션이라는 것은 트랜잭션을 시작하거나 기존 트랜잭션에 참여하는 방법에 대해 결정하는 속성값 정도로 생각하면 된다. 즉 큰 트랜잭션의 흐름을 컨트롤 하는 옵션이라는 것이다. Transaction Propagation의 종류는 다음과 같다. · REQUIRED (default) : 이미 시작된 트랜잭션이 있으면 참여하고 없으면 새로 시작한다. · REQUIRES_NEW : 항상 새로운 트랜잭션을 시작한다. 이미 진행 중인 트랜잭션이 있으면 트랜잭션을 잠시 보류시킨다. · SUPPORTS : 이미 시작된 트랜잭션이 있으면 참여하고, 없으면 트랜잭션없이 진행한다. · NESTED : 중첩된 트랜잭션은 먼저 시작된 부모 트랜잭션..