inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

스프링 핵심 원리 - 고급편

안녕하세요 강사님! 강의 너무너무 도움 되고 잘 들었습니다!! 질문이 있습니다! JDBCTemplate로 batchUpdate시에 동시성문제가 생기나요?

313

이호겸

작성한 질문수 3

0

JPA에선 아이디 체번방식에따라서 bulkInsert/update를 지원하지않다보니 JDBCTemplate에 batchUpdate를 통해 로직을 작성하게됐습니다. 이때 동시성 문제를 고민하지않을수가 없어서 찾아보니 JDBCTemplate도 내부적으로 ThreadLocal을 사용하고 있었습니다. 그렇다면 JDBCTemplate도 동시성문제를 고민하지 않아도 되는 부분일까요?

궁금해서 JDBCTemplate의 코드를 뒤져보다가 DataSourceUtils.getConnection(ds) 내부에서

TransactionSynchronizationManager.getResource(ds)를 통해 ConnectionHolder를 가져오는데

TransactionSynchronizationManager.getResource(ds)를 더 들어가 보면

ThreadLocal <Map <Object, Object>>로 되어있는 resources를 가져와 ds를 키로 ConnectionHolder를 가져오는 것을 볼 수 있었습니다. 그래서 운영단계로 넘어가도 동시성문제가 없을것 같은데 강사님 생각은 어떠신지 궁금합니다!

스크린샷 2022-10-21 오후 2.04.23.png

spring 디자인-패턴

답변 1

1

김영한

안녕하세요. 이호겸님

어떤 동시성 문제가 걱정되시는지요? 이 부분을 자세히 알려주셔야 답변을 드릴 수 있을 것 같습니다.

감사합니다.

0

이호겸

답글 감사합니다!

제가 궁금했던점은 애플리케이션서버를 클러스터로 여러개 띄워서 운영할때 bulk insert가 비교적 오래걸리는 작업이다 보니 해당 작업이 커밋되기전에 트래픽이 몰리면 클러스터간에 데이터동기화 문제가 있지 않을까 하는 것이였습니다!(트래픽을 처리해본 경험이 없다보니 이러한 궁금증이 생겼습니다 ㅎㅎ..)...

제가 그 이후로 좀 더 찾아봤는데 이 문제는 애플리케이션단에서 해결하기 보단 mysql 분산락 기능을 사용하거나 redis를 활용하는 사례를 봤었습니다!

0

김영한

네 호견님 잘 찾아보았습니다. 애플리케이션에서 해결하기는 어렵고, 생각하신 것 처럼 해당 방법들을 사용해야 합니다.

감사합니다.

SpringBoot 4.0.6 버전에서 PackageLogTracePostProcessor exception

0

90

3

어드바이스 순서 디폴트 기준이 궁금합니다.

0

75

1

AspectV1 예제를 @Configuration 수동 등록으로도 가능한가요?

0

103

2

구체 클래스를 상속받아 확장한 형태도 클래스패턴/데코레이터 패턴이라고 칭하나요?

0

74

1

TraceTemplate 을 미리 빈으로 등록해서 사용할때 이렇게 설정하는게 맞는건가요?

0

70

1

Decorator 에서 추상메서드로 뺄때 질문 있습니다.

0

64

1

대상 클래스에 기본 생성자가 없을 때

0

84

1

스프링 부트 버전 4.0 aop 의존성 명칭 변경

1

422

2

final 키워드 사용 관련 질문

0

85

1

안녕하세요

0

78

1

ThradLocal 실무 사례

0

108

2

실무에서의 동시성 문제

0

73

1

로그 등 부가 기능에 대한 테스트코드

0

63

1

ProceedingJoinPoint와 MethodInvocation에 대하여

0

81

1

실무 멀티스레딩에 대한 궁금증

0

86

1

안녕하세요 질문있습니다

0

49

1

AspectV3 aop 실행 순서 문의 드립니다

0

47

1

MDC vs AOP 중에 고민중입니다.

0

87

1

순환참조

0

174

2

this를 단독으로 사용할때랑 파라미터 바인딩 할때 차이

0

84

1

빈 후처리에 등록 질문 있습니다.

0

85

1

AppConfig 설정하는 설명중에 이해가 안되는게 있습니다.

0

102

1

ThreadLocal을 지역변수로 선언하면 remove가 필요할까요?

0

122

2

@Aspect 어노테이션으로 생성된 Advisor의 Bean 저장 여부

0

78

1