[To do List] 모델 구현

oh_eol·2024년 1월 21일
0

To-do-List

목록 보기
2/5

전체 패키지 구조

전체 패키지의 구조는 아래와 같다.

entity, dto, JpaAuditingConfig 순으로 작성하였다.


Entity

데이터베이스에 저장되는 데이터 객체로, 데이터베이스와 직접적으로 연결된다.

TodoEntity

package todolist.entity;

import lombok.AccessLevel;
import lombok.Getter;
import lombok.NoArgsConstructor;

import javax.persistence.*;

@Getter
@Entity
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class TodoEntity extends BaseEntity {

   @Id
   @GeneratedValue(strategy = GenerationType.IDENTITY)
   private Long id;

   @Column(nullable = false)
   private String title;

   public TodoEntity(String title) {
       this.title = title;
   }

   public TodoEntity update(String title) {
       this.title = title;
       return this;
   }

}

MemberEntity

package todolist.entity;

public class MemberEntity {

    private Long seq;
    private String id;
    private String pw;

    public Long getSeq() {
        return seq;
    }

    public void setSeq(Long seq) {
        this.seq = seq;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getPw() {
        return pw;
    }

    public void setPw(String pw) {
        this.pw = pw;
    }
}

  • BaseEntity의 경우 JpaAuditing에서 작성한다.


Dto

클라이언트와 서버 간 데이터 전송을 위해 설계된 객체이다.

TodoRequest

요청을 받아오기 위해 필요한 클래스이다.

package todolist.dto;
import lombok.Data;
@Data
public class TodoRequest {
   private String title;
}

TodoResponse

요청에 응답하기 위해 필요한 클래스이다.
요청에 편리하게 응답하기 위해 TodoEntity를 파라미터로 받는 생성자를 추가했다.

package todolist.dto;
import todolist.entity.TodoEntity;
public class TodoResponse {
   private Long id;
   private String title;

   public TodoResponse(TodoEntity todoEntity) {
       this.id = todoEntity.getId();
       this.title = todoEntity.getTitle();
   }
}

JpaAuditingConfig

Jpa Auditing 이란?

Entity를 보고있다가 DB에 저장하거나 업데이트를 하는 경우 생성일자, 생성자, 수정일자, 수정자 등 중요한 메타데이터를 자동으로 데이터베이스에 반영해주는 기능이다.
여기서는 생성일자, 수정일자만 사용했다.

Auditing 활성화

1. Base Entity 생성

package todolist.entity;

import lombok.Getter;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;

import javax.persistence.EntityListeners;
import javax.persistence.MappedSuperclass;
import java.time.LocalDateTime;

// 시간 데이터 (JPA Auditing)
@Getter
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public abstract class BaseEntity {

    private LocalDateTime createdAt;    // 생성일시

    private LocalDateTime modifiedAt;   // 수정일시

}

2. Entity 매핑 및 Base Entity 상속

  • TodoEntity 참고
  • @Entity annotation을 클래스 위에 추가해서 JPA가 해당 클래스를 테이블과 맵핑 수 있게 만들어준다.
  • Base Entity 를 상속받도록 extends 선언을 추가한다.

3. @EnableJpaAuditing 선언

package todolist.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;

// 시간 데이터(생성, 수정 시간)을 자동으로 등록하기 위해서 필요하다.
@Configuration
@EnableJpaAuditing
public class JpaAuditingConfig {
}
  • Config 패키지를 만들어서 JpaAuditingConfig 를 작성했다.
  • 클래스 안에 AuditorAware() 를 빈으로 등록하면 @CreatedBy, @LastModifiedBy 가 붙은 필드에 현재 로그인한 사용자의 정보를 주입할 수 있지만, 여기서는 진행하지 않았다.

참고

https://web-km.tistory.com/42

profile
공부 중입니다.

0개의 댓글