인프런 커뮤니티 질문&답변

단무지님의 프로필 이미지

작성한 질문수

실전! Querydsl

JPAQueryFactory 의존성 질문드립니다..!

해결된 질문

21.02.03 19:07 작성

·

266

0

안녕하세요~ 강사님~
수업시간에 JPAQueryFactory를 @Bean으로 등록하셨는데 이걸 주입받은 객체에서 다른 객체로 넣어줘도 멀티쓰레드 환경에서 문제가 없을까요?? 

샘플 코드

public interface FruitBehavior {

List<FruitList> getFruitList();

}

@RequiredArgsConstructor
public class BananaRepository implements FruitBehavior {

private final JPAQueryFactory queryFactory;

@Override
public List<FruitList> getFruitList() {
queryFactory
.selectFrom(fruit);
}
}

@RequiredArgsConstructor
public class TestRepositorySupport {
private final JPAQueryFactory queryFactory;

private final Map<String, FruitBehavior> map = new HashMap<>();

void doSomething() {
map.put("Banana", new BananaRepository(queryFactory)); // 여기!!!
}
}

대충 이런식으로 ...TestRePositorySupport에서 주입받은 queryFactory를 BananaRepository를 만들때 넣어줘도 문제가 없을까요?
실행해봤는데 결과는 잘 출력되는데.. 혹시나 싱글턴이 깨지거나 다른 이슈들이 생기진 않을까 궁금합니다..!!

답변 1

1

김영한님의 프로필 이미지
김영한
지식공유자

2021. 02. 03. 22:18

안녕하세요. 참치캔님

네 괜찮습니다. JPAQueryFactory는 쓰레드에 안전합니다.

그런데 여기 코드에서 HashMap을 사용하셨는데요. 멀티쓰레드 상황에서는 Concurrenthashmap을 사용하셔야 합니다.

감사합니다.