리마큐에서 트랜잭션은 짧게 유지하는게 좋다 => 트랜잭션을 오래 점유하고 있으면 언두로그에 로그가 쌓이고 이게 성능저하로 이어지기 때문에


그럼 스프링부트 서버에서는 어떻게 트랜잭션을 짧게 해야하나 생각해보다가 내 대가리론 해답이 안떠오름..


1. 서비스 레이어에서 @Transactional 어노테이션을 써서 처음 커넥션풀에서 커넥션을 할당받고, 해당 메소드 안에 있는 내용중 트랜잭션이 또 필요하다면

다른 클래스의 @Transactional 메소드를 사용해서 내부 트랜잭션을 사용 => 이렇게 하면 트랜잭션 전파 속성 기본이 Required니까 동일한 커넥션을 사용하는 것에서 이점이 있지만 실질적인 물리 트랜잭션의 유지 기간은 내부 트랜잭션을 사용하든 사용하지 않든 똑같다고 느낌


2. 그럼 퍼사드 서비스 레이어를 만들고 이 레이어의 메소드에는 @Transactional이 없게 만든 후 각각 서비스 레이어들을 DI 받아서 따로따로 트랜잭션을 적용시키는것. 이게 2번째로 생각한 방법인데. 이렇게 하면 각각의 @Transactional가 붙은 메소드는 따로 분리되어 있기 때문에 별도의 커넥션을 사용한다고 느낌. 이렇게 하면 데이터베이스에서의 트랜잭션 점유 문제를 해결할 수는 있겠지만 커넥션풀의 사용과 반납을 반복해야 한다는 점에서 비효율적이라고 생각함..


내 대가리론 딱 이정도만 생각나는데 어떻게 해야 트랜잭션 점유시간도 줄이면서 동일한 커넥션을 사용할 수 있음??