Spring Boot 프로그램에서 Repository와 Entity를 작성해보자

Spring Boot 프로젝트 /src/java/com.example 폴더 밑에 Entity라는 패키지를 만든다

테이블이 5개이므로 5개의 Entity를 만들어보겠습니다

Entity 패키지 안에 다음과 같은 java class 파일을 만든다

  • UserEntity
  • BoardEntity
  • PopularSearchEntity
  • LikeEntity
  • CommentEntity

우리가 Spring Boot 프로젝트에 Lombok을 받아왔기 때문에 Entity에 @Data 어노테이션을 삽입해준다

@Data 삽입이 안될 것이다 @AllArgsConstructor 어노테이션을 같이 삽입하자

  • @NoArgsConstructor

  • @Builder

  • @Entity
    = 해당 클래스를 Entity 클래스로 사용하겠다고 선언하는 어노테이션

  • @Table
    = 테이블을 매핑하기 위한 어노테이션
    = 데이터베이스에 있는 해당하는 테이블과 현재 클래스를 매핑 시킴

총 6개의 어노테이션을 작성한다

package com.hyeonjoonpark.board_crud.Entity;

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

import javax.persistence.Entity;
import javax.persistence.Table;

@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Entity(name="User")
@Table(name="User")
public class UserEntity {

}

@Entity(name="User")
@Table(name="User") 과 같이 name을 지정한다

@Table 클래스의 name은 MySQL 테이블과 같은 이름으로 지정해준다


이제 User 클래스 안에 데이터베이스 컬럼을 작성한다

package com.hyeonjoonpark.board_crud.Entity;

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

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Entity(name="User")
@Table(name="User")
public class UserEntity {
    @Id
    private String userEmail;
    private String userPassword;
    private String userNickname;
    private String userPhoneNumber;
    private String userAddress;
    private String userProfile;
}

userEmail 는 PK로 지정이 되어있기 때문에 @Id 어노테이션을 작성해준다


BoardEntity도 똑같이 작성해준다

package com.hyeonjoonpark.board_crud.Entity;

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

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;

@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Entity(name="Board")
@Table(name="Board")
public class BoardEntity {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int boardNumber;
    private String boardTitle;
    private String boardContent;
    private String boardImage;
    private String boardVideo;
    private String boardFile;
    private String boardWriterEmail;
    private String boardWriterProfile;
    private String boardWriterNickname;
    private String boardWriteDate;
    private int boardClickCount;
    private int boardLikeCount;
    private int boardCommentCount;
}

boardNumber가 Auto Increment로 지정되어있기 때문에
@GeneratedValue(strategy = GenerationType.IDENTITY) 어노테이션 하나 추가해주자.

  • 기본키를 자동으로 생성해주는 어노테이션이다
    전략(strategy)
    1. IDENTITY : AUTO_INCREMENT
    2. SEQUENCE : 오라클, Postgre 에서 사용하는 시퀀스 지원
    3. TABLE : 키 생성 전용 테이블을 만들고 이름, 값을 만들어서 시퀀스를 훙내냄

package com.hyeonjoonpark.board_crud.Entity;

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

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Entity(name="PopularSearch")
@Table(name="PopularSearch")
public class PopularSearchEntity {
    @Id
    private String popularTerm;
    private int popularSearchCount;
}

PopularSearch 클래스도 똑같은 형식으로 만들어준다


package com.hyeonjoonpark.board_crud.Entity;

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

import javax.persistence.*;

@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Entity(name="Likes")
@Table(name="Likes")
public class LikeEntity {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int likeId;
    private int boardNumber;
    private String userEmail;
    private String likeUserProfile;
    private String likeUserNickname;
}

LikeEntity 클래스도 똑같은 방법으로 만들어준다


package com.hyeonjoonpark.board_crud.Entity;

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

import javax.persistence.*;

@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Entity(name="Comment")
@Table(name="Comment")
public class CommentEntity {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int commentId;
    private int boardNumber;
    private String userEmail;
    private String commentUserProfile;
    private String commentUserNickname;
    private String commentWriteDate;
    private String commentCotent;
}

마지막으로 CommentEntity 클래스도 작성해준다

Repository 만드는 것도 같이 포스팅할려고 했지만 길이가 너무 길어져서
다음 블로그에 작성할 것이다

profile
Backend Developer

0개의 댓글