To-Do-List API Server : Create Model & Repository

12374 단어 SpringSpring

저번 포스팅에서 to-do-list 서버의 프로젝트 생성과 gradle 설정까지 해보았습니다.
이번 포스팅에서는 모델과 레퍼지토리를 만들어보겠습니다.

Model


일단 필요한 모델들 TodoModel, TodoRequset, TodoResponse 객체를 만든다.

TodoModel

package org.example.model;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.persistence.*;

@Data
@Entity
@NoArgsConstructor
@AllArgsConstructor
public class TodoModel {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(nullable = false)
    private String title;

    @Column(name = "todoOrder", nullable = false) 
    private Long order;

    @Column(nullable = false)
    private Boolean completed;

}

TodoModel은 Entity객체로 DB Table의 컬럼들을 명시한다.

TodoRequest

package org.example.model;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class TodoRequest {

    private String title;
    private Long order;
    private Boolean completed;
}

클라이언트 요청으로 부터 받을 데이터를 명시한다.

TodoResponse

package org.example.model;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class TodoResponse {
    private Long id;
    private String title;
    private Long order;
    private Boolean completed;
    private String url;

    public TodoResponse(TodoModel todoModel){
        this.id = todoModel.getId();
        this.title = todoModel.getTitle();
        this.order = todoModel.getOrder();
        this.completed = todoModel.getCompleted();

        this.url = "http://localhost:8080/" + this.id;
    }
}

클라이언트에게 응답할때 넘겨줄 응답 데이터를 명시한다.

Repository


디비에 쿼리를 날릴 수 있게 JpaRepository를 상속하고 있는 객체 TodoRepository를 만든다.

TodoRepository

package org.example.repository;

import org.example.model.TodoModel;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface TodoRepository extends JpaRepository<TodoModel, Long> {

}

H2 Database Setting


H2 데이터베이스를 사용하기 위해 몇가지 설정이 더 필요하다.
현재 gradle dependencies에 h2가 정의되어있지 않다면 추가해준다.

dependencies {
	...
	runtimeOnly 'com.h2database:h2' // h2 의존성 추가
}

그리고 src/main/resources/ 경로에 application.yml 파일을 생성해준다.

생성한 application.yml 파일에 데이터베이스 설정을 해준다.

# Database Settings
spring:
  datasource:
    url: jdbc:h2:mem:testdb;MODE=mysql;
    platform: h2
    username: sa
    password:
    driverClassName: org.h2.Driver


## H2 Settings
  h2:
    console:
      enabled: true
      path: /h2-console

데이터베이스 url은 jdbc:h2:mem:testdb로 임메모리 관계형 데이터베이스를 추가한다.
MODE=mysql 구문은 다른 여러 DB처럼 동작 가능하도록 호환모드를 지원받기 위해서 쓴다.
MODE=는 완벽하게 모든 기능을 지원하지는 않는다.

해당 데이터베이스 설정 구문들은 실제 디비를 설치해서 구동하는 것이 아니기 때문에
디비를 웹콘솔로 접근 할 수 있도록 H2 설정에 웹콘솔 구문도 추가해준다.

이렇게 하면 간단한 모델과 레퍼지토리 그리고 데이터베이스 설정까지 끝난다.
다음은 Service와 Controller를 구현해서 실제로 API 통신이 되는지 확인해보자!

좋은 웹페이지 즐겨찾기