웹개발 환경 세팅 - 5. 프로젝트에 DB연동하기 with yml (https://noobnim.tistory.com/48) 에 이어서 진행합니다.

 

웹개발 환경 세팅 - 5. 프로젝트에 DB 연동하기 with yml

웹개발 환경 세팅 - 4. mariaDB 설치, 설치확인하기 (https://noobnim.tistory.com/47?category=847081) 에 이어서 진행합니다. 웹개발 환경 세팅 - 4. mariaDB 설치, 설치확인 하기 웹개발 환경 세팅 - 3. Spring..

noobnim.tistory.com

 

 

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에 접속하면

위와같이 테이블에 입력해둔 맴버의 이름이 표시됨을 확인 할 수 있습니다.

 

 

 

출처) https://jojoldu.tistory.com/372

웹개발 환경 세팅 - 4. mariaDB 설치, 설치확인하기 (https://noobnim.tistory.com/47?category=847081) 에 이어서 진행합니다.

 

웹개발 환경 세팅 - 4. mariaDB 설치, 설치확인 하기

웹개발 환경 세팅 - 3. Spring Boot 적용하기 (https://noobnim.tistory.com/44?category=847081) 에 이어서 진행합니다. 웹개발 환경 세팅 - 3. Spring Boot 적용하기 웹개발 환경 세팅 - 2. 웹프로젝트 생성하기..

noobnim.tistory.com

 

1. yml 적용하기

 

저는 프로젝트에 yml 을 이용하여 DB를 연동하기로 했습니다.

 

프로젝트에서 build.gradle을 열도록 합니다.

 

dependencies {
    ...
    compile("org.mariadb.jdbc:mariadb-java-client")
    ...
}

dependencies 에 위와 같이 mariadb jdbc를 추가합니다.

 

processResources {
    filesMatching("**/application.yml") {
        expand(project.properties)
    }
}

기본으로 생성되는 src/main/resources의 아래에 application.yml 를 추가하여 사용하기 위한 세팅을 합니다.

 

 

src/main/resources 에 application.yml 을 생성합니다.

 

spring:
  datasource:
    driver-class-name: org.mariadb.jdbc.Driver    # mariadb의 jdbc 드라이버
    username: 디비 ID		  # 데이터베이스 사용자 ID
    password: 비밀번호		# 데이터베이스 사용자 비밀번호
    url: jdbc:mariadb://localhost:3306/디비명		# 데이터베이스 url

application.yml 에 위와 같이 디비연결의 기본적인 세팅을 합니다.

 

디비연동은 위와같이 간단하게 마무리됩니다.

다음 포스팅에 이어서 querydsl 을 적용하여 기본적인 테스트를 진행하도록 하겠습니다.

웹개발 환경 세팅 - 3. Spring Boot 적용하기 (https://noobnim.tistory.com/44?category=847081) 에 이어서 진행합니다.

 

웹개발 환경 세팅 - 3. Spring Boot 적용하기

웹개발 환경 세팅 - 2. 웹프로젝트 생성하기(https://noobnim.tistory.com/20?category=847081) 에 이어서 진행합니다. 웹개발 환경 세팅 - 2. 웹프로젝트 생성하기 웹개발 환경 세팅 - 1.Intellij Community 설치..

noobnim.tistory.com

 

 

저의 개인적인 개발용 데이터베이스로 MriaDB를 설치해보도록 하겠습니다.

 

 

1. MariaDB 설치하기

 

https://downloads.mariadb.org/

 

Downloads - MariaDB

 

downloads.mariadb.org

위의 다운로드 URL로 이동합니다.

 

 

Download 10.4.8 Stable Now! 를 클릭하여 이동합니다.

 

 

자신의 운영체제에 맞는 버전을 다운받도록 합니다.

저는 windows 환경으로 다운로드 받았으며, 클릭하고 잠시후면 다운로드가 진행됩니다.

 

 

다운로드가 완료되면 mariadb-10.4.8-winx64 파일을 더블클릭하여 실행합니다.

 

 

저는 이미 설치를 해버려서 설치프로그램 캡쳐는 https://offbyone.tistory.com/199 해당 링크를 참고로 합니다.

 

 

Next 를 클릭하여 진행합니다.

 

 

라이센스 동의여부에 체크를 한 후 Next클릭으로 진행합니다.

 

 

설치 위치 지정부분 입니다. 기본으로 두면 C:\Program Files\MariaDB 10.4 경로에 설치됩니다.

 

 

root계정의 비밀번호를 입력하는 부분입니다.

- 중간의 Enable access from remote machines for 'root' user 는 외부에서 root계정으로 접속을 허용하겠다는 체크입니다. 저는 체크하지 않았습니다.

- Use UTF8 as default server's character set 을 체크하여 서버의 기본 캐릭터 셋을 UTF8로 지정합니다.

 

 

 

- Install as service 를 체크하고 서비스명은 기본인 MySQL을 사용합니다.

- Enable networking 을 체크하고, 포트는 기본인 3306을 사용하였습니다. 

Next를 클릭하여 진행합니다.

 

 

 

MariaDB의 사용정보를 제조사로 전송한다는 여부의 체크이며, 체크하지 않고 Next로 진행합니다.

 

 

 

Install 을 클릭하여 설치를 진행합니다.

이후 설치가 완료되면 Finish를 클릭하여 설치를 완료하도록 합니다.

 

 

2. MariaDB 설치 확인하기

 

 

시작메뉴 > MariaDB 10.4 > MySQL Client 를 실행하도록 합니다.

 

 

켜자마자 비밀번호를 입력하는 부분이 나오며, 설치시 진행했던 root의 비밀번호를 입력합니다.

위와 같은 화면이 보인다면 정상적으로 설치가 완료되었습니다.

웹개발 환경 세팅 - 2. 웹프로젝트 생성하기(https://noobnim.tistory.com/20?category=847081) 에 이어서 진행합니다.

 

웹개발 환경 세팅 - 2. 웹프로젝트 생성하기

웹개발 환경 세팅 - 1.Intellij Community 설치하기 (https://noobnim.tistory.com/19) 에 이어서 진행합니다. 웹개발 환경 세팅 - 1. Intellij Community 설치하기 웹 개발 환경 설정부터 공부를 시작하기까지 기..

noobnim.tistory.com

 

 

1. OpenJDK 설치하기 

 

과정을 진행하기 전에 JDK를 먼저 설치했어야했는데 출처의 글을 보면서 이제야 생각이 났네요.

OpenJDK를 다운받으러 가도록 합니다.  (https://jdk.java.net/13/)

 

 

운영체제에 맞게 JDK를 다운받습니다. 저는 Windows 환경이므로 Windows용을 다운로드 받았습니다.

다운받아진 압축파일은 본인이 원하는 위치에 풀어주도록 합니다.

저는 C:\Program Files 안에다 풀어두었습니다.

 

 

 

2. OpenJDK 환경변수 설정하기 

 

윈도우+R 키를 눌러 실행창을 열고 cmd를 입력하여 실행합니다.

 

 

echo %PATH%

를 입력하여 현재의 환경변수 PATH를 확인합니다.

 

 

set PATH=%PATH%;C:\Program Files\Java\openjdk-13\bin

자신이 압축해제한 OpenJDK의 경로에서 bin폴더까지의 경로를 추가한 후 제대로 추가되었는지 확인합니다.

 

 

java --version

을 입력하여 버전확인이 제대로 되고있다면 환경변수 설정이 잘 된것입니다.

 

 

 

3. Spring Boot 적용하기 

 

Intellij에서 생성한 프로젝트에서

build.gradle 파일을 열면 기본적으로 작성되어 있는 소스가 있습니다.

 

buildscript {
    ext {
        springBootVersion = '2.1.6.RELEASE'
    }
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    }
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'

group 'web'
version '1.0.0-SNAPSHOT'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    compile('org.springframework.boot:spring-boot-starter-web')
    compile('org.springframework.boot:spring-boot-starter-thymeleaf')
    compile('org.springframework.boot:spring-boot-starter-data-jpa')
    runtime('com.h2database:h2')
    runtime('org.springframework.boot:spring-boot-devtools')
    compileOnly('org.projectlombok:lombok')
    testCompile group: 'junit', name: 'junit', version: '4.12'
}

위의 코드를 복사하여 덮어쓰기 하도록 합니다.

group, version은 본인이 처음 설정한 내용대로 입력하도록 합니다.

 

 

위와같이 패키지 구조를 만들고 각각 Application, Controller 클래스파일을 생성하도록 합니다.

 

package com.myhome;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application {
    public static void main(String arg[]){
        SpringApplication.run(Application.class, arg);
    }
}

첫번째로 Application 클래스의 소스입니다.

패키지선언부분을 제외하고 붙여넣습니다.

 

package com.myhome.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HomeController {
    @RequestMapping("/")
    public String index(){
        return "확인!";
    }
}

두번째로 Controller 클래스의 소스입니다.

마찬가지로 패키지 선언부분을 제외하고 붙여넣습니다.

 

@ (어노테이션)에 대해서는 별도로 포스팅 하도록 하겠습니다.

 

 

인텔리제이의 우측상단에 Add Configuration을 클릭합니다.

 

 

팝업에서 + 버튼을 누른다음 그래들을 선택합니다.

 

 

그래들 프로젝트의 명칭을 지정해준다음

Tasks에 bootRun을 추가해주고 OK버튼을 클릭합니다.

 

 

정상적으로 추가가 되었으며 Run버튼이나 Debug 버튼을 클릭하여 로컬 서버를 실행하도록합니다.

 

 

인텔리제이 하단의 콘솔에서 SpringBoot가 정상적으로 실행되는 모습입니다.

 

 

정상적으로 실행되었습니다.

http://localhost:8080/ 로컬페이지를 열어보도록 합니다.

 

위와같이 확인 이라는 메세지가 보이면 성공적으로 실행 된것입니다.

SpringBoot 설정은 여기서 마치겠습니다.

 

출처) https://www.bsidesoft.com/?p=6926

+ Recent posts