• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

querydsl config 관련 질문 드립니다.

21.03.22 13:45 작성 조회수 134

0

안녕하세요. 강의 정말 잘 들었습니다! 

제가 들었던 강의 중에 가장 일목요연하게 말씀을 잘 해주시는 것 같아요 ㅠㅠ

얼마전에 유튜브에서 배민의 마이크로서비스 여행기도 너무 재미있게 잘 보았습니다! 

다름이 아니라 querydsl 관련하여 질문이 있어서 문의를 드립니다.

강의 내용과는 조금 다른 부분일 수도 있지만 ㅠㅠ 구글링을 해봐도 답이 나오지 않아, 제가 물어볼 수 있는 곳이 여기밖에 없어서 간절한  마음에 질문을 올립니다.... 

결론적으로 제가 하고 싶은 건, 여러 DB를 하나의 쿼리로 묶고싶습니다. 

테이블이 아닌 데이터베이스가 분리되어있는 형태입니다. 

1) jpaQueryFactory에는 하나의 entityManager만 연결해야하나요? 

    현재 저는 여러개의 DB를 사용하고 있고, 각각의 DB에 대한 config 파일이 별도로 분리되어있는 형태입니다. 

     

public class ADataSourceConfig ...{
    ...
   @Bean(name="AEntityManager")
   public LocalContainerENtityManagerFactoryBean entityManager(@Qualifier("ADataSource") DataSource dataSource) { 
      ....
   }

   @Bean(name="AJpaQueryFactory")
    public JPAQueryFactory AJpaQueryFactory(@Qualifier("AEntityManager") EntityManager entityManager){
            return new JPAQueryFactory(entityManager);    
    }
}


...

public class BDataSourceConfig ...{
    ...
   @Bean(name="BEntityManager")
   public LocalContainerENtityManagerFactoryBean entityManager(@Qualifier("BDataSource") DataSource dataSource) { 
      ....
   }

   @Bean(name="BJpaQueryFactory")
    public JPAQueryFactory AJpaQueryFactory(@Qualifier("BEntityManager") EntityManager entityManager){
            return new JPAQueryFactory(entityManager);    
    }
}

2) 만일 그렇다면, RepositoryCustom 안에서는 하나의 jpaQueryFactory 밖에 불러올 수 없게 되는 형태가 되는데

     여러개의 DB를 하나의 Impl 안에서는 사용을 할 수 없게 되는건가요 ?ㅠ_ㅠ

     애초에 구조를 잘못잡은 건지 원래 되지 않는 형태인건지 궁금합니다. 

public class ACustomImpl implement Custom{

   @Autowired
   private JPAQueryFactory queryFactory;

   QAEntity a = QAEntity.aEntity; //db a 
   QBEntity b = QAEntity.bEntity; //db b

   @Override
    public List<A> getA(){
           return queryFactory
                       .select(a)
                       .from(a)
                       .innerJoin(b) .... 
    }
     
}


긴 글 읽어주셔서 감사합니다.

답변 1

답변을 작성해보세요.

0

안녕하세요. legm0117님

여러 DB를 하나의 쿼리로 묶는 것은 지원하지 않습니다.

그리고 리포지토리를 별도로 분리하셔야 합니다.

감사합니다.

legm0117님의 프로필

legm0117

질문자

2021.03.23

감사합니다 :)!