멀티쓰레드 상황에서도 안전하게 커넥션을 동기화해주는 매니저
TransactionSynchronizationManager
Transaction을 유지하려면 Transaction의 시작부터 끝까지 같은 데이터베이스 커넥션을 유지해야한다.
이에, 같은 커넥션을 동기화(맞추어 사용)하기 위해서 이전에는 파라미터로 커넥션을 전달하는 방법을 사용했다.
하지만, 파라미터로 커넥션을 전달하는 방법은 코드가 지저분해지는 것은 물론이고, 커넥션을 넘기는 메서드와 넘기지 않는 메서드를 중복해서 만들어야 하는 등 여러가지 단점들이 많다.
Transaction 동기화 매니저를 통해 위의 단점들을 해결했으며, 추가적으로 ThreadLocal을 활용해 멀티쓰레드 상황에 안전하게 커넥션을 동기화할 수 있다.
커넥션이 필요할 때, Transaction 동기화 매니저를 통해 커넥션을 획득하면 된다.
ThreadLocal을 사용해서 멀티 쓰레드 상황에 안전하게 커넥션을 동기화해준다.
Transaction Manager는 내부에서 이 Transaction 동기화 매니저를 사용한다.
Transaction 동기화 매니저 덕분에 커넥션을 파라미터로 넘기지 않아도 된다.