LazyConnectionDataSourceProxy

Rosa·2021년 10월 13일
0

정리

Spring에서 @Transactional가 붙은 메소드 진입 시점부터 커넥션을 잡고 있게 된다.
근데 우리 커넥션 풀의 양이 무한이 아니기 때문에 커넥션을 연결해서 처리하는 스타일이 낄끼빠빠여야한다.

lazyconnectiondatasourceproxy를 사용해서 transactionManager를 생성하여 사용하면,
@Transactional 메소드 진입 시점부터가 아닌
그 안에 쿼리 실행 시점부터 실제 커넥션을 받아 쓰게 된다.
그렇게 되면 커넥션 이용시간이 줄어들 수 있다는 장점이 있다. 커넥션 풀이 부족해지는 확률을 낮출 수 있다.
대표적인 장점으로는 master/slave db 를 분기칠 수 있다. 이건 determineCurrentLookupKey에서 @Transactional에 readonly 옵션을 읽어서 true 면 slave. false면 master로 데이터 소스를 정해주면 된다.

  • @Transactional 메소드 진입 시점에는 프록시 객체가 만들어져있을 뿐이고 커넥션은 사용하지 않고 있다. 실제 사용 시에만 커넥션 사용한다.

참고

profile
기록, 메모

0개의 댓글