유저 권한에 따라 모든 쿼리에 조회조건이 추가되야 하는 경우가 생겼다.예를 들면 '본인 소속 데이터만 조회해야 하는 권한자 일 경우' 매 쿼리마다 유저권한을 체크해서유저 부서와 쿼리 데이터를 비교하는 조건절을 추가해야 하는 상황이 생겼다. 제네릭하게 구현해보려다가PathBuilder 를 사용해서 모든 엔티티를 비교하는 메소드를 작성하였다. PathBuilder 란? QueryDSL 에서 제공하는 유연한 클래스이며,엔티티의 QClass를 직접 사용하는 대신, 동적으로 엔티티의 속성에 접근할 수 있는 클래스이다.동적으로 생성된 엔티티나 필드를 다룰때 유용하다. PathBuilder 의 특징이라면QClass 없이 엔티티에 접근가능하고제네릭 메소드와 함께 사용하여 런타임 오류를 방지하고특정 엔티티..
엔티티의 LocalDateTime 날짜형식 데이터를 년월(YYYY-MM) 로만 비교해줘야 하는 상황이 생겼다. 그 동안은 String 형식으로 넘어온 날짜데이터를 비교할 때, AttributeConverter 를 사용해서 mapstruct 에서나 querydsl 에서 사용해왔었다. [Mapstruct] LocalDateTime To String Converter, 엔티티와 DTO간 타입이 다를때 맵핑하기 (feat.AttributeConverter) 보통 날짜값을 사용할 때 db와 뷰와의 관계에서 컨버팅을 자주 하게 된다. DB에는 예쁘게 들어가있지만 사용자 화면에 그대로 뿌리면 보통 우리가 보던 포맷이 아니기 때문에 매우 별로다. 그래 jong-bae.tistory.com 그 동안 비교값을 LocalD..
엔티티가 연관관계없이 특정 컬럼들만 조인해서 뽑아와야 할때가 있다. 이때 엔티티에 값을 담아서 리턴할 수 없어서 DTO에 반환해야 하는데 Projections 를 이용하면 보기좋게 코드를 작성할 수 있다. 먼저 Projections 내의 3가지 bean, fields, constructor 를 이용하는 방법과 @QueryProjection 어노테이션을 이용하는 방법이 있다. 활용해본 결과 Projections의 생성자를 이용하는 방법과 @QueryProjection 어노테이션을 이용하는 방법이 좋은 것 같고 프로젝트 상황에 따라 이 2가지를 사용하는게 이점이 있다고 본다. bean과 fields 방식은 DTO의 필드들과 네이밍이 동일하지 않으면 삽입이 안되서 다른 네이밍들은 직접 다 잡아줘야 한다. AE..
org.hibernate.hql.internal.ast.QuerySyntaxException: SampleEntity is not mapped 앞서 다중 DB를 사용하기 위해 설정하고 JPA + QueryDSL + Mybatis 를 이용할 수 있게 구성했는데 그 중 querydsl 을 사용할 때 Primary DB 는 크게 문제 없이 잘 작동 하였는데 sub DB 가 위와 같은 오류를 내뿜었다. 해당 오류는 db에 엔티티 테이블 맵핑을 찾을 수 없어서 나는 오류이다. [SpringBoot] 다중 Datasource, JPA+QueryDsl+Mybatis 사용 설정. 지난번에 이기종 DB 를 연결하기 위해 Datasource 를 분리하는 작업을 했었는데 거기에 덧붙여 JPA와 Mybatis를 사용할 수 있..
지난번에 이기종 DB 를 연결하기 위해 Datasource 를 분리하는 작업을 했었는데거기에 덧붙여 JPA와 Mybatis를 사용할 수 있게하고 QueryDSL 까지 사용하려고 한다. [SpringBoot JPA] 다중 DB 설정하기 (multi Datasource + 이기종 DB)간혹 사이트들을 연계해야 할때, 그 중에서도 api 없는 사이트의 데이터를 사용해야할 때, 하나의 웹에서 여러 DB를 연결 시켜 사용해야 할 때가 있다. 간단하게 DB Link 로 해결하려 했으나 메인으jong-bae.tistory.com JPA 설정만으로 분리하는 것은 위 전 포스팅과 같이 매우 간편하게 설정할 수 있었다.하지만 필자 프로젝트에 Mybatis도 간혹 필요한 부분이 있어서 설정하는데약간의 예상치 못한 시행..
사내에 querydsl 설정을 아주 잘 하는 동료가 있다면 문제가 없겠지만,저와 같이 홀로 분투하시는 분들을 위해 저도 지금까지 이 방법 저 방법 해오다가깔끔하게 해결된 상태를 공유하고자 합니다. 저도 Q클래스 생성하는 법을 여러 설정법으로 올렸었고,마주하던 여러 오류상황들을 조치했던 글을 서너개 포스팅 했는데...지속적으로 불편한 상황들이 계속 발생 되었고, 주변 동료들에게도 빈번하게 발생하여이 상황을 문제없게 해결하고자 QueryDSL 설정을 다시 건드려보게 되었습니다. 초반에는 설정에 대한 이해가 부족한 상태였던 것 같고 지속적으로 이 부분을 마주하다 보니 깨달음이 온 것 같네요. 이번 포스트는 인텔리제이에서의 방법입니다. 이클립스나 STS 를 사용하시는 분들은 아래 포스트로 진행하..