목록JPA/QueryDSL (6)
개발놀이터
스프링 부트가 5.0이 됨에 따라 그런지 모르겠지만 javax.persistence에 있던 EntityManager가 작동하지 않는 상황이 발생했습니다. 이제 EntityManager는 jakarta.persistence로 바뀌게 되었는데 이에따라 querydsl의 설정을 바꿔줘야할 필요가 생겼습니다. 구글링을 해본 결과는 다음과 같습니다. buildscript { ext { queryDslVersion = "5.0.0" } } plugins { id 'java' id 'org.springframework.boot' version '3.1.0' id 'io.spring.dependency-management' version '1.1.0' // querydsl plugin 제거 //id "com.ewerk..
이 포스팅은 인프런 김영한 님의 실전! Querydsl 편을 보고 각색한 포스팅입니다. 자세한 내용은 강의를 확인해주세요 프로젝션과 결과 반환 - 기본 프로젝션이란 뭘까? 그냥 간단하게 select 대상으로 지정된 것을 말한다. 크게 봤을 때 프로젝션이 한개일 때와 여러개일 때로 나눠볼 수 있다. 프로젝션 대상이 하나일 때 @Test public void simpleProjection() { List result = queryFactory .select(member.username) .from(member) .fetch(); for (String s : result) { System.out.println("s = " + s); } } select문에 member.username하나만 있는 상황이다. 이럴..
이 포스팅은 인프런 김영한 님의 실전! Querydsl 편을 보고 각색한 포스팅입니다. 자세한 내용은 강의를 확인해주세요 QueryDSL 시작하기 먼저 QueryDSL을 시작하기 위해선 gradle에서 설정을 해줘야한다. //querydsl 추가 buildscript { ext { queryDslVersion = "5.0.0" } } plugins { id 'org.springframework.boot' version '2.6.3' id 'io.spring.dependency-management' version '1.0.11.RELEASE' id 'java' id 'war' //querydsl 추가 id "com.ewerk.gradle.plugins.querydsl" version "1.0.10" } g..
*스프링 데이터 JPA에서의 QueryDSL 사용 사용자 정의 리포지토리를 사용하면 된다. (Spring Data JPA 참고) *QueryDSL 페이징 연동 + 스프링 데이터 JPA 1. 사용자 정의 리포지토리를 사용해서 구현체를 만든다. 2. 인자값으로 Pageable을 넘긴다. 3. queryFactory에서 offset메서드, limit메서드를 사용한다. // offset(pageable.getOffset()), limit(pageable.getPageSize()) 4. fetchResults()메서드로 최종연산을 마무리 짓는다. // 이유 : 페이징 처리를 하려면 전체 데이터 개수를 알고 있어야 하므로 5. total사이즈를 뽑는다. fetchResults()의 결괏값으로 QueryResults..
*프로젝션과 결과 반환 프로젝션 : select 대상 지정 -프로젝션 대상이 하나일 때 (단일 타입) List result = queryFactory.select(member.username).from(member).fetch(); 1. 프로젝션 대상이 하나면 타입을 명확하게 지정할 수 있음 2. 프로젝션 대상이 둘 이상이면 튜플이나 DTO로 조회 -프로젝션 대상이 둘 이상일 때 (튜플 사용) List result = queryFactory.select(member.username, member.age).from(member).fetch(); -사용방법 for (Tuple tuple : result) { String username = tuple.get(member.username); Integer ag..
*QueryDSL *QueryDSL 시작하기 build.gradle plugins에 id "com.ewerk.gradle.plugins.querydsl"version "1.0.10" 추가 build.gradle dependencies 에 implementation 'com.querydsl:querydsl-jpa' 추가 build.gradle에 맨아래에 def querydslDir = "$buildDir/generated/querydsl" querydsl { jpa = true querydslSourcesDir = querydslDir } sourceSets { main.java.srcDir querydslDir } configurations { querydsl.extendsFrom compileClass..