개발로드

★KDT 2024-04-29☆프로젝트(2)-BackEnd-SpringBoot-gradle 본문

JAVA

★KDT 2024-04-29☆프로젝트(2)-BackEnd-SpringBoot-gradle

위대한개발자 2024. 4. 29. 12:50

Todo entity 생성


package com.shopapi.domain;

import jakarta.persistence.*;
import lombok.*;

import java.time.LocalDate;

@ToString
@Builder
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name="tbl_todo")
public class Todo {
    @Id    //pk
    @GeneratedValue(strategy = GenerationType.IDENTITY )  //auto_increment, 데이터베이스가 알아서 처리, 자동으로 생성
    private Long tno;
    //    @Column(name="content", length = 20)
    private String title;
    //    @Column(nullable = false)
    private String writer;
    private boolean complete;
    private LocalDate dueDate;

}

 

 

어노테이션


@ToString: 이 어노테이션은 toString() 메서드를 자동으로 생성하여 객체의 문자열 표현을 반환합니다.
@Builder: 이 어노테이션은 빌더 패턴을 사용하여 Todo 객체를 생성할 수 있도록 해줍니다.
@Getter 및 @Setter: 이 어노테이션들은 각 필드에 대한 getter와 setter 메서드를 자동으로 생성합니다.
@AllArgsConstructor: 이 어노테이션은 모든 필드를 포함하는 생성자를 자동으로 생성합니다.
@NoArgsConstructor: 이 어노테이션은 인자가 없는 기본 생성자를 자동으로 생성합니다.

 

 

엔티티 및 테이블 매핑


@Entity: 이 클래스는 JPA 엔티티임을 나타내며, 데이터베이스 테이블과 매핑됩니다.
@Table(name="tbl_todo"): 이 어노테이션은 이 엔티티가 매핑되는 데이터베이스 테이블의 이름을 지정합니다.

 

 

필드 및 어노테이션



@Id: tno 필드는 기본 키(PK)를 나타냅니다.
@GeneratedValue(strategy = GenerationType.IDENTITY): tno 필드의 값은 데이터베이스에서 자동으로 생성되며, IDENTITY 전략을 사용합니다.
나머지 필드들은 title, writer, complete, dueDate이며, 각각 Todo 엔티티의 속성을 나타냅니다. complete은 boolean 타입으로, 할 일의 완료 상태를 나타냅니다.
dueDate는 LocalDate 타입으로, 할 일의 기한 날짜를 나타냅니다.

 

 

TodoDTO 생성


package com.shopapi.dto;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.*;

import java.time.LocalDate;

@Data
//@Getter
//@Setter
//@ToString
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class TodoDTO {

    private Long tno;
    private String title;
    private String writer;
    private boolean complete;

    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDate dueDate;

}//end of class

 

 

Lombok 어노테이션



@Data: 이 어노테이션은 @Getter, @Setter, @ToString, @EqualsAndHashCode, @RequiredArgsConstructor를 포함하는 Lombok의 통합 어노테이션입니다. 클래스에 필요한 모든 표준 메서드와 기능을 자동으로 생성합니다.
@Builder: 이 어노테이션은 빌더 패턴을 사용하여 TodoDTO 객체를 생성할 수 있도록 해줍니다.
@AllArgsConstructor: 모든 필드를 포함하는 생성자를 자동으로 생성합니다.
@NoArgsConstructor: 인자가 없는 기본 생성자를 자동으로 생성합니다.

 

 

필드


tno: 할 일(Todo) 객체의 고유 식별자(ID)를 나타냅니다.
title: 할 일의 제목을 나타냅니다.
writer: 할 일을 작성한 작성자를 나타냅니다.
complete: 할 일의 완료 상태를 나타내는 불리언 필드입니다.
dueDate: 할 일의 기한을 나타내는 LocalDate 타입의 필드입니다.

 

 

@JsonFormat 어노테이션


 

@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss"): 이 어노테이션은 dueDate 필드에 적용되어 있습니다. 이 어노테이션은 이 필드를 JSON 형식으로 직렬화하거나 역직렬화할 때 날짜와 시간을 지정된 형식(yyyy-MM-dd HH:mm:ss)으로 포맷팅합니다.

 

 

TodoService 생성


package com.shopapi.service;

import com.shopapi.domain.Todo;
import com.shopapi.dto.TodoDTO;

public interface TodoService {
//#1. 등록 기능
    Long register(TodoDTO todoDTO);


}//end of interface

 

이 인터페이스는 구현 클래스를 통해 실제 비즈니스 로직을 수행합니다. 예를 들어, TodoService를 구현한 클래스에서 register 메서드를 구현하여 TodoDTO 데이터를 데이터베이스에 저장하고, 등록된 할 일의 식별자를 반환할 수 있습니다.

이 인터페이스는 Spring 프레임워크에서 의존성 주입 및 테스트 가능성을 향상시키는 데 사용됩니다. 인터페이스를 사용하여 비즈니스 로직을 추상화함으로써 구현 클래스의 교체가 쉽고 코드의 유지 보수가 용이해집니다.

 

 

TodoServiceImpl 생성