목록분류 전체보기 (572)
오봉이와 함께하는 개발 블로그
기본 Q-Type 활용 Q클래스 인스턴스를 사용하는 2가지 방법 QMember qMember = new QMember("m"); // 별칭 직접 지정 QMember qMember = QMember.member; // 기본 인스턴스 사용 기본 인스턴스를 static import와 함께 사용 아래 방법으로 사용하면 정말 깔끔하게 코드를 작성할 수 있다. import static study.querydsl.entity.QMember.*; @Test void startQuerydsl3() { //member1을 찾아라. Member findMember = queryFactory .select(member) .from(member) .where(member.username.eq("member1")) .fetchO..
시작 - JPQL vs 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 =..
설정 사용 기능 Spring Web JPA H2 DB lombok build.gradle Spring Boot 2.6, Querydsl 5.0 이상부터 설정 방법이 바뀌었기 때문에 현재 버전에 맞춰 설정했다. //querydsl 추가 buildscript { ext { queryDslVersion = "5.0.0" } } plugins { id 'org.springframework.boot' version '2.7.3' id 'io.spring.dependency-management' version '1.0.13.RELEASE' //querydsl 추가 id "com.ewerk.gradle.plugins.querydsl" version "1.0.1..
네이티브 쿼리 가급적 네이티브 쿼리는 사용하지 않는게 좋기 때문에 정말 어쩔 수 없을 때 사용하자. 최근에 나온 네이티브 쿼리 활용 방법은 스프링 데이터 Projections를 활용하는 방법이다. 스프링 데이터 JPA 기반 네이티브 쿼리 페이징 지원 반환 타입 Object[] Tuple DTO(스프링 데이터 인터페이스 Projections를 지원함) 제약 반환 타입이 적기 때문에 사용하기 어중간하다. Sort 파라미터를 통한 정렬이 정상 동작하지 않을 수 있음(믿지 말고 직접 처리) JPQL처럼 애플리케이션 로딩 시점에 문법 확인 불가 동적 쿼리 불가 JPA 네이티브 SQL 지원 public interface MemberRepository extends JpaRepository { @Query(value..
Projections 엔티티 대신에 DTO를 편리하게 조회할 때 사용한다. public interface UsernameOnly { String getUsername(); } 조회할 엔티티의 필드를 getter 형식으로 지정하면 해당 필드만 선택해서 조회(Projection) public interface MemberRepository ... { List findProjectionsByUsername(String username); } 메서드 이름은 자유, 반환 타입으로 인지 @Test public void projections() throws Exception { //given Team teamA = new Team("teamA"); em.persist(teamA); Member m1 = new Mem..