웹개발 환경 세팅 - 5. 프로젝트에 DB연동하기 with yml (https://noobnim.tistory.com/48) 에 이어서 진행합니다.
MariaDB를 기반으로 한 QueryDSL을 적용하도록 하겠습니다.
1. Build.gradle 설정
프로젝트의 build.gradle 파일을 열도록 합니다.
buildscript { ext { ... querydslPluginVersion = '1.0.10' // 플러그인 버전 } repositories { ... maven { url "https://plugins.gradle.org/m2/" } // 플러그인 저장소 } dependencies { ... classpath("gradle.plugin.com.ewerk.gradle.plugins:querydsl-plugin:${querydslPluginVersion}") // querydsl 플러그인 의존성 등록 } }
springboot 설정시 세팅했던 buildscript 부분에 위와같이 3개의 항목을 각각 추가합니다.
위의 플러그인이 있어야 QClass 가 생성이 됩니다.
QClass는 Querydsl의 중심이 되는 역할을 하게 됩니다.
다음으로 dependencies 에 querydsl과 mariadb의 라이브러리를 추가하도록 합니다.
dependencies { ... compile("com.querydsl:querydsl-jpa") compile("com.querydsl:querydsl-apt") ... }
지난 springboot 설정때 추가했던 dependencies 에 추가로 적용한 부분입니다.
querydsl 이 라이브러리를 추가하도록 합니다.
apply plugin: "com.ewerk.gradle.plugins.querydsl" // Plugin 적용 def querydslSrcDir = 'src/main/generated' // QClass 생성 위치 querydsl { library = "com.querydsl:querydsl-apt" jpa = true querydslSourcesDir = querydslSrcDir } sourceSets { main { java { srcDirs = ['src/main/java', querydslSrcDir] } } } compileQuerydsl{ options.annotationProcessorPath = configurations.querydsl } configurations { querydsl.extendsFrom compileClasspath }
이제 위에서 설정한 Plugin을 사용할 Task를 추가합니다.
저는 gradle 5버전을 사용하고 있어서 하단에 compileQuerydsl 와 configurations 두 부분을 추가했습니다.
gradle 5버전을 사용하지 않으면 위의 두 부분은 추가가 필요없다고 합니다.
2. QuerydslConfiguration 생성
프로젝트의 src/main/java 경로에 QuerydslConfiguration 를 생성하도록 합니다.
저는 프로젝트 하단에 querydsl 패키지를 별도로 생성하여 추가하였습니다.
package com.webhome.querydsl; import com.querydsl.jpa.impl.JPAQueryFactory; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; @Configuration public class QuerydslConfiguration { @PersistenceContext private EntityManager entityManager; @Bean public JPAQueryFactory jpaQueryFactory() { return new JPAQueryFactory(entityManager); } }
QuerydslConfiguration 의 코드입니다.
추가시 프로젝트의 어느곳에서나 JPAQueryFactory 를 주입받아 querydsl 을 사용할 수 있다고 합니다.
3. 테스트를 위한 설정
저는 우선적으로 DB에 테스트용 테이블을 생성해둔 상태입니다.
제가 생성한 Member table을 기반으로 테스트를 진행합니다.
1) 엔티티 생성
package com.webhome.model; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Table; @Entity @Table(name="member") public class Member { @Id @Column(name = "ID") private String id; @Column(name = "NAME") private String username; @Column(name = "AGE") private String age; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } }
제가 생성한 Member 테이블의 엔티티입니다.
@Entity 어노테이션으로 엔티티임을 명시합니다.
@Table(name="member") 생성한 테이블 명을 입력합니다.
@Id 는 해당 테이블의 키값임을 알리는 표시입니다.
@column 은 Member 테이블의 각 컬럼을 알리는 표시입니다.
2) Repository 생성
package com.webhome.repository; import com.webhome.model.Member; import org.springframework.data.jpa.repository.JpaRepository; public interface MemberRepository extends JpaRepository<Member, Long> { }
테스트용으로 검증할 Repository를 생성합니다.
3) QClass 생성
Intellij의 우측 사이드에보시면 Gradle 항목이 보입니다.
Gradle > Tasks > other 에 보면 compileQuerydsl 이 보입니다. 더블클릭하여 실행하면
src/main/generated 항목 안에 위에서 생성한 엔티티와 같은 경로로 QClass 파일이 생성됩니다.
4) 데이터 추출
저는 우선적으로 제대로 연동되는지 만을 확인하기 위하여 RestController에 바로
Repository를 사용하여 데이터를 추출하였습니다.
package com.webhome.controller; import com.webhome.model.Member; import com.webhome.repository.MemberRepository; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.List; @RestController public class HomeController { //private Logger logger = LoggerFactory.getLogger(getClass()); @Autowired private MemberRepository memberRepository; @RequestMapping("/") public String index(){ List members = memberRepository.findAll(); return members.get(0).getUsername(); } }
위와같이 입력하고나면 이제 설정은 끝났습니다.
서버를 실행하여 localhost에 접속하면
위와같이 테이블에 입력해둔 맴버의 이름이 표시됨을 확인 할 수 있습니다.
'개발환경 > windows 웹개발' 카테고리의 다른 글
웹개발 환경 세팅 - 5. 프로젝트에 DB 연동하기 with yml (0) | 2019.10.12 |
---|---|
웹개발 환경 세팅 - 4. mariaDB 설치, 설치확인 하기 (0) | 2019.10.12 |
웹개발 환경 세팅 - 3. Spring Boot 적용하기 (0) | 2019.10.07 |
웹개발 환경 세팅 - 2. 웹프로젝트 생성하기 (0) | 2019.09.08 |
웹개발 환경 세팅 - 1. Intellij Community 설치하기 (0) | 2019.09.08 |