querydsl 5

순수 JPA와 Querydsl

동적 쿼리와 성능 최적화 조회 - Builder 먼저 회원 정보와 소속 팀 정보를 담는 DTO를 생성하고 @QueryProjection을 통해 QType 클래스를 만들어주었다. 찾고자하는 회원에 대한 조건이 여기에 담겨서 넘어올 것이다. QType의 DTO가 생성되었기 때문에 위와같이 바로 DTO로 조회를 한다. Querydsl의 BooleanBuilder를 사용해 위와 같이 조건을 설정해주고 위와 같이 Repository의 코드를 구현하였다. 회원 이름과 팀 이름이 조건과 같은, 나이는 AgeGoe

Spring/Querydsl 2021.08.30

검색 기능 만들기(동적쿼리) - Querydsl 사용

현재 Spring Security를 사용하여 로그인, 로그아웃을 구현한 상태이고 인증(로그인)하지 않은 사용자는 게시판에 접속할 수 없도록 구현해놓았다. Controller 파라미터로 page(페이징 변수), category(카테고리별 조회), myPost(내 게시물 보기), searchDto(검색창)를 받는다. 1. page page는 defaultValue를 0으로 설정하였기 때문에 값을 설정하지 않으면 0페이지부터 보여준다. 만약 다음 페이지 버튼을 누르게 되면 현재 페이지에서+1을 한 값이 page 변수에 담기고, 이전 페이지 버튼을 누르면 현재 페이지에서 -1을 한 값이 담긴다. 2. category required 속성을 false로 지정해놓았기 때문에 category 값을 주지 않으면 nul..

중급 문법

1. 프로젝션과 결과 반환 1-1. 프로젝션과 결과 반환 - 기본 프로젝션 : select 대상을 지정 프로젝션 대상이 하나 프로젝션 대상이 하나면 타입을 명확하게 지정할 수 있다. 둘 이상이면 튜플이나 DTO로 조회한다. 튜플 조회 "com.querydsl.core.Tuple" 리스트의 타입이 Tuple형식으로 반환된다. 데이터를 사용할 때는 get()을 사용하여 값을 꺼낸다. 1-2. 프로젝션 결과 반환 - DTO 조회 (중요!!) JPA에서 DTO를 조회할 때는 new 오퍼레이션을 사용하는데, DTO의 패키지명을 다 적어줘야해서 매우 지저분해지고 생성자 방식만 지원한다는 단점이 존재한다. Querydsl 빈 생성 - 프로퍼티 접근 - 필드 직접 접근 - 생성자 사용 먼저 프로퍼티 접근을 사용하는 방..

Spring/Querydsl 2021.06.29

기본 문법

JPQL을 사용하여 회원 이름으로 조회하기 Querydsl을 사용하여 회원 이름으로 조회하기 JPAQueryFactory에 EntityManager 객체를 넣어줌. 훨씬 더 직관성이 있고 알아보기 쉽다. 파라미터 바인딩을 해주지 않아도 알아서 처리해준다. Querydsl은 JPQL 빌더 JPQL: 문자(실행 시점 오류), Querydsl: 코드(컴파일 시점 오류) JPQL: 파라미터 바인딩 직접, Querydsl: 파라미터 바인딩 자동 처리 EntityManager, JPAQueryFactory 모두 동시성 문제가 발생하지 않게 설계가 되어 있다. 따라서 EntityManager 처럼 JPAQueryFactory도 필드 레벨에서 선언하여 사용하여도 문제없다. 스프링 프레임워크는 여러 쓰레드에서 동시에 같..

Spring/Querydsl 2021.06.18
반응형