본문 바로가기
프로그래밍/spring

[JPA] Spring DATA JPA Querydsl - 1

by 혀끄니 2023. 7. 17.
728x90
  • Querydsl이란?

- @Query어노테이션 안에 JPQL문법으로 문자열을 입력하기 때문에 잘못 입력하면 컴파일 시점에 에러를 발견할 수 없다.

- Querydsl은 JPQL을 코드로 작성할 수 있도록 도와주는 빌더 API

- Querydsl은 소스코드로 SQL문을 문자열이 아닌 코드로 작성하기 때문에 컴파일러의 도움을 받음

- 개발자에게 오타가 있음을 알림

  • Querydsl 장점

- 고정된 SQL문이 아닌 조건에 맞게 동적으로 쿼리를 생성

- 비슷한 쿼리를 재사용할 수 있으며, 제약 조건 조립 및 가독성을 향상

- 문자열이 아닌 자바 소스코드로 작성, 컴파일 시점에 오류를 발견

- IDE의 도움을 받아서 자동 완성 기능을 이용, 생산성을 향상

pom.xml

		//querydsl.version : 5.0.0
        <!--querydsl-->
		<dependency>
			<groupId>com.querydsl</groupId>
			<artifactId>querydsl-core</artifactId>
			<version>${querydsl.version}</version>
		</dependency>
		<dependency>
			<groupId>com.querydsl</groupId>
			<artifactId>querydsl-apt</artifactId>
			<version>${querydsl.version}</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>com.querydsl</groupId>
			<artifactId>querydsl-jpa</artifactId>
			<version>${querydsl.version}</version>
		</dependency>
<build>
		<plugins>
			<plugin>
				<groupId>com.mysema.maven</groupId>
				<artifactId>apt-maven-plugin</artifactId>
				<version>1.1.3</version>
				<executions>
					<execution>
						<goals>
							<goal>process</goal>
						</goals>
						<configuration>
							<outputDirectory>target/generated-sources</outputDirectory>
							<processor>com.querydsl.apt.jpa.JPAAnnotationProcessor</processor>
						</configuration>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>

- Qdamin이라는 자바 코드를 생성하는 플러그인을 추가해줌

- 엔티티를 기반으로 접두사 'Q'가 붙는 클래스들을 자동으로 생성해주는 플러그인

1. 인텔리제이 오른쪽 편에 있는 [Maven]을 클릭

2. <Reload All Maven Projects>버튼을 클릭 (pom.xml에 dependency를 추가하면 이 버튼을 클릭)

3. Maven Dependencies에 querydsl 관련 Dependencies가 추가됨

4. [maven compile] 더블 클릭

5. target/generated-sources 폴더에 QItem클래스가 생성

6. QItem 임포트가 안될때

- [File] - [Project Structure] - [Modules]메뉴에 들어가서 위 그림과 같이 target폴더 아래의 generated-source폴더를 클릭 후 <Sources> 버튼을 클릭해 소스코드로 인식할수있게 처리

728x90