본문 바로가기
Spring/JPA

JPA 개념 및 Test controller 작성, lombok을 이용한 dto 작성, h2를 이용한 데이터베이스 설정

by step 1 2021. 7. 3.
반응형

ORM: 데이터베이스와 어플리케이션을 연결해주는 것

 

JPA: JAVA에서 ORM의 기능을 해주는 인터페이스

 

실습에 필요한 추가 요소

dependency 확인 (build.gradle)

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    compileOnly 'org.projectlombok:lombok'
    runtimeOnly 'com.h2database:h2'
    annotationProcessor 'org.projectlombok:lombok'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

 

기본 예제 생성

controller

package com.example.bookmanager.controller;

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

@RestController
public class HelloWorldController {
    @GetMapping("/hello-world")
    public String helloWorld(){
        return "hello-world";
    }
}

 

controller를 테스트 하기 위해 테스트 코드 생성(단축키 ctrl + shift + T)

 

MVC Test 코드 작성

package com.example.bookmanager.controller;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;

import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;


// MVC TEST 진행
@WebMvcTest
class HelloWorldControllerTest {

    @Autowired
    private MockMvc mockMvc;

    @Test
    void helloWorld() throws Exception{
        mockMvc.perform(MockMvcRequestBuilders.get("/hello-world"))
                .andDo(print())
                .andExpect(status().isOk())
                .andExpect(content().string("hello-world"));
    }
}

 

결과 확인

 

lombok을 이용해서 DTO 작성(어노테이션의 대한 내용은 아래 사이트 참고)

롬복(Lombok)의 어노테이션들 - (EqaulsAndHashCode, XArgsConstructor, Data, Value, Builder) :: 간단한 블로그 (tistory.com)

 

롬복(Lombok)의 어노테이션들 - (EqaulsAndHashCode, XArgsConstructor, Data, Value, Builder)

6. @EqualsAndHashCode equals(Object) 메소드와 hashCode() 메소드를 오버라이드한다.  @ToString 어노테이션과 마찬가지로 exclude 파라미터로 필드를 제외하거나 callSuper 파라미터로 부모 객체를 생략하거나..

partnerjun.tistory.com

DTO 예제

package com.example.bookmanager.domain;

import lombok.*;

import java.time.LocalDateTime;

@RequiredArgsConstructor
@NoArgsConstructor
@AllArgsConstructor
@Data
@Builder
public class User {
    @NonNull
    private String name;
    @NonNull
    private String email;
    private LocalDateTime createdAt;
    private LocalDateTime updateAt;

}

위와 같은 방식으로 Test 코드 작성

package com.example.bookmanager.domain;

import org.junit.jupiter.api.Test;

import java.time.LocalDateTime;

import static org.junit.jupiter.api.Assertions.*;

class UserTest {

    @Test
    void test(){
        User user = new User();
        user.setEmail("aaaa@naver.com");
        user.setName("aaaa");
        user.setCreatedAt(LocalDateTime.now());
        user.setUpdateAt(LocalDateTime.now());
        System.out.println(">>>> " + user.toString());
    }
}

 

h2 데이터 베이스 설정 (properties 대신 yml을 사용하였다.)

resources 폴더 및에 application.properties 파일을 삭제하고 application.yml을 생성한다.

yml을 사용하는 이유

https://hyunsangwon93.tistory.com/22

 

Spring boot yaml 파일 사용법

YAML을 사용하는 이유(장점)  1. 프로퍼티스 파일같은 경우는 중복된 코드 삽입  2. --- 신택스로 파일을 분리할 필요가 없이 한파일내에서 마치 분리해서 사용가능  3. 보기 편하다 Spring Boot 에서

hyunsangwon93.tistory.com

yml과 properties의 차이점

https://recordsoflife.tistory.com/434

 

Spring Boot에서 application.yml vs application.properties 차이점

1. 개요 Spring Boot의 일반적인 관행은 외부 구성을 사용하여 속성을 정의하는 것 입니다. 이를 통해 다른 환경에서 동일한 애플리케이션 코드를 사용할 수 있습니다. 속성 파일, YAML 파일, 환경 변

recordsoflife.tistory.com

 

application.yml

spring:
  h2:
    console:
      enabled: true
server:
  port: 8080

 

설정 후 spring boot 실행

 

web에서 h2 접속하는 방법

주소창에 입력: http://localhost:8080//h2-console/login.jsp 

 

아래 화면이 나오면 URL 입력하는 란에 위 캡쳐에서 처럼 생성된 코드를 입력해준다. 그 후 connect

접속 후 show databases 명령을 입력하면 실행되는 것을 확인할 수 있다.

 

인텔리제이에서 확인하는 방법

우측 데이터 베이스 클릭

h2 데이터 베이스를 추가해준다.

 

URL에 생성된 코드를 입력해주고 연결테스트를 진행하여 성공하면 끝(처음에는 드라이브를 설치해야 한다. 하단에 띄워진다.)

 

확인을 클릭하면 console파일이 나오고 show databases 명령어를 입력하면 정상적으로 출력된다.

반응형

'Spring > JPA' 카테고리의 다른 글

QueryMethod 예제 2  (0) 2021.07.17
Query Method 구현 1  (0) 2021.07.17
JPA 메소드 예제 3 - update  (0) 2021.07.11
JPA TEST 코드 예제 2  (0) 2021.07.11
JPA 설정 및 테스트코드 예제 1  (0) 2021.07.04