사용자 도구

사이트 도구


springframework:abstractroutingdatasource

문서의 이전 판입니다!


SpringFramework AbstractRoutingDataSource

Shard DataSource 구분자

  • Shard DataSource 구분자를 Enum으로 만들자.
  • 개발을 하다보면 Shard 전체를 하나씩 돌면서 뭔가 처리하거나 하는 일이 생기는데, 그때 enum을 루프돌면 된다.

트랜잭션 관련 주의할 점

  • AbstractRoutingDataSource를 사용할 경우 Transaction 과 DataSource의 타입 지정 타이밍 처리에 주의해야 한다.
    • Transaction이 시작되기 전에(보통은 @Transactional이 걸리기 전)에 먼저 사용할 DB를 지정하는 작업이 선행돼야 한다.
  • DB가 변경되는 매 요청마다 트랜잭션을 안 걸어주면 한번 요청에 여러 DB접속이 필요할 경우 최초의 connection을 재사용하기 때문에 여러 DB 접속이 안된다.
  • 따라서 꼭 트랜잭션을 걸어주고, 각 호출이 서로 다른 Connection을 사용할 수 있도록 해야한다.(일반적으로 Connection은 TransactionManager가 관리한다)
    • 트랜잭션 내부에서 다른 트랜잭션 호출시 커넥션 변경을 유발하라면 Propagation 규칙을 잘 적용해야 한다.
    • Propagation.REQUIRES_NEW/NEVER/NOT_SUPPORTED 등을 조합할 수 있어야 한다.
springframework/abstractroutingdatasource.1446527088.txt.gz · 마지막으로 수정됨: 2015/11/03 13:34 저자 kwon37xi