강의/실전! Querydsl(5)
-
Section7. 스프링 데이터 JPA가 제공하는 Querydsl기능
인터페이스 지원 - QuerydslPredicateExecutor 제약이 일단 커서 복잡한 실무 환경에서 사용하기에는 한계가 있다. 공식 URL: https://docs.spring.io/spring-data/jpa/docs/2.2.3.RELEASE/reference/html/ #core.extensions.querydsl 사용법 MemberRepository 인터페이스에 QuerydslPredicateExecutor을 상속 받아준다. public interface MemberRepository extends JpaRepository, MemberRepositoryCustom, QuerydslPredicateExecutor { } 테스트코드 findAll()안에 조건을 바로 넣어준다. @Test publ..
2024.04.06 -
Section6. 실무활용 - 스프링 데이터 JPA와 Querydsl
스프링 데이터 JPA - MemberRepository 생성 Interface로 MemberRepository를 만들고 스프링 데이터 JPA를 상속받음 findByUsername()을 따로 만들어주면 By~를 스프링 데이터 JPA가 인식해서 다음과 같은 쿼리를 자동으로 실행하게 해줌 select * from member where username = ? public interface MemberRepository extends JpaRepository { List findByUsername(String username); } 사용자 정의 리포지토리 사용자 정의 리포지토리 사용법 사용자 정의 인터페이스 작성 (MemberRepositoryCustom.class) 사용자 정의 인터페이스 구현 (MemberR..
2024.04.06 -
Section5. 실무활용 - 순수JPA와 Querydsl
목차 순수 JPA 리포지토리와 Querydsl 동적쿼리 Builder 적용 동적쿼리 Where 적용 조회 API 컨트롤러 개발 순수 JPA 리포지토리와 Querydsl 순수 JPA 리포지토리 생성하기 MemberJpaRepository.java JPA를 사용하기 위해 EntityManager를 주입. QueryDsl을 사용하기 위해 JPAQuerydsl을 주입 JPAQueryFactory는 별도로 빈 등록해서 롬복 @RequiredArgument와 함께 사용 가능. @Repository public class MemberJpaRepository { private final EntityManager em; private final JPAQueryFactory queryFactory; public Membe..
2024.04.06 -
Section4. 중급문법
프로젝션과 결과 반환 - 기본 select절에 뭘 가져올지 지정하는 것 프로젝션 대상이 하나면 타입을 명확하게 지정 가능 둘 이상이면 튜플이나 DTO로 조회 튜플 조회 repository계층에서만 사용해야함. @Test void tupleProjection() { // 원하는 데이터만 추출 List result = queryFactory .select(member.username, member.age) .from(member) .fetch(); for (Tuple tuple : result) { String username = tuple.get(member.username); Integer age = tuple.get(member.age); System.out.println("username = " + ..
2024.04.06 -
Section3. 기본문법
JPQL vs QueryDsl JPQL @Test public void startJPQL() { // member1을 찾아라 Member findMember = em.createQuery("select m from Member m where m.username = :username", Member.class) .setParameter("username", "member1").getSingleResult(); Assertions.assertThat(findMember.getUsername()).isEqualTo("member1"); } 쿼리문을 잘못 작성했을 시 사용자가 API를 호출했을 때, 오류가 발견된다. (런타임 오류) QueryDsl @Test public void startQuerydsl() {..
2024.04.06