Java/Querydsl

    [Querydsl] Spring Data JPA + Querydsl , Pageable(페이징)

    Spring Data JPA 설정 먼저 기존 Repository클래스 말고 Spring Data JPA사용을 위해 인터페이스를 생성한다. 클래스가 아닌 인터페이스이다. Spring Data JPA Repository로 변경 public interface MemberRepository extends JpaRepository { List findByUsername(String username); } Spring Data JPA는 메소드 이름을 사용하여 자동으로 JPQL을 만들어주기 때문에 이전과 다르게 EntityManager를 사용하여 직접 구현할 필요가 없다. findByUsername은 [select m from Member m where m.username = ?]과 같다. 테스트 @SpringBoo..

    [Querydsl] 순수 JPA Repository + Querydsl

    순수 JPA → Querydsl 변경 순수 JPA 사용 메소드 @Repository public class MemberJpaRepository { private final EntityManager em; private final JPAQueryFactory queryFactory; public MemberJpaRepository(EntityManager em){ this.em = em; this.queryFactory = new JPAQueryFactory(em); } public void save(Member member){ em.persist(member); } public Optional findById(Long id){ Member findMember = em.find(Member.class,id..

    [Querydsl] 프로젝션, 동적 쿼리, 배치 쿼리(벌크 연산)

    프로젝션 프로젝션은 select절에 무엇을 가져올지 대상을 지정하는 것을 프로젝션이라고 한다. 프로젝션 대상이 하나인 경우 @Test public void oneProjection(){ List members = queryFactory .select(member.username) .from(member) .fetch(); for (String s : members){ System.out.println("s = "+s); } } 이 경우에는 프로젝션 대상이 하나이기 때문에 타입을 명확하게 지정할 수 있다. 프로젝션 대상이 둘 이상이면? 이전에 봤던 Tuple이나 DTO로 조회해야 한다. 튜플로 조회 ‘com.querydsl.core.Tuple’ @Test public void tupleProjection(..

    [Querydsl] Querydsl 기본문법

    JPQL, Querydsl 비교 테스트 코드 @SpringBootTest @Transactional public class QuerydslBasicTest{ @Autowired EntityManager em; @BeforeEach public void before(){ Team teamA = new Team("teamA"); Team teamB = new Team("teamB"); em.persist(teamA); em.persist(teamB); Member member1 = new Member("member1",10,teamA); Member member2 = new Member("member2",20,teamA); Member member3 = new Member("member3",30,teamB)..

    [Querydsl] Querdydsl 설정하기

    build.gradle(Spring Boot 2.x) 1. plugin 추가 plugins { id 'java' id 'org.springframework.boot' version '3.0.2' id 'io.spring.dependency-management' version '1.1.0' //querydsl 추가 id "com.ewerk.gradle.plugins.querydsl" version "1.0.10" } 2. dependencies에 querydsl 라이브러리 추가 dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-..