[Spring Boot] 회원 CRUD 프로젝트 - 회원 엔티티 구현

가연우·2022년 4월 26일
0

Spring Study Project

목록 보기
2/2

회원 Entity


회원의 정보를 가지는 테이블을 만들어주기 위해 Entity를 생성하겠습니다.
경로는 기본 프로젝트 밑에 entity 패키지를 생성했습니다.

package com.study.springstudy2.entity;

import lombok.*;
import javax.persistence.*;

@Entity
@Getter
@Table(name = "users_tb")
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(length = 20, nullable = false)
    private String userId;

    @Column(length = 10, nullable = false)
    private String userName;

    @Column(length = 30, nullable = false)
    private String userPassword;

    @Builder
    public User(String userName, String userPassword, String userId){
        this.userId=userId;
        this.userName=userName;
        this.userPassword=userPassword;
    }
}

Entity는 실제 데이터베이스의 테이블과 매핑되는 클래스입니다. 그래서 실제 테이블을 설계하는 것처럼 작성하면 됩니다.

  • @Entity : 해당 어노테이션이 붙은 클래스는 Entity라는 것을 뜻합니다.
  • @Getter : User 클래스의 멤버변수의 getter 메서드를 생성해줍니다.
  • @Table(name = "") : 해당 어노테이션이 붙은 클래스를 테이블과 매핑한다는 뜻입니다. name 속성은 테이블의 이름을 지정해줄 수 있습니다. 생략하면 클래스의 이름으로 지정됩니다.
  • @NoArgsConstructor(access = AccessLevel.PROTECTED) : 기본 생성자를 생성하는 어노테이션입니다. 기본 생성자에 접근 제어자를 설정하지 않으면 무분별하게 객체가 생성될 수 있기 때문에 access 속성을 통해 설정합니다.
  • @AllArgsConstructor : 모든 멤버변수를 가지고 있는 생성자를 생성합니다.

위의 어노테이션은 `Entity`를 설계할 때 필요한 어노테이션입니다. 다음은 테이블의 필드를 담당할 멤버변수들에 사용되는 어노테이션입니다.
  • @Id : 해당 어노테이션이 붙은 멤버변수는 PK(Primary Key)라는 뜻입니다. 기본적으로 null과 중복값이 허용되지 않습니다.
  • @GeneratedValue(strategy = GenerationType.IDENTITY) : @Id와 같이 쓰는 어노테이션입니다. pk의 생성전략을 정하는 역할입니다. strategy 속성은 어떤 식으로 값을 넣어줄 지 정할 수 있습니다. GenerationType.IDENTITY는 흔히 말하는 AUTO_INCREMENT와 같은 기능을 합니다.
  • @Column : 객체의 멤버변수를 테이블의 컬럼에 연결합니다. length 속성은 해당 변수의 최대 길이를 나타냅니다. nullable 속성은 null 허용 여부를 결정합니다. true는 허용, false는 허용 안함을 뜻합니다.

유저 객체는 id가 자동 생성되기 때문에 모든 멤버변수가 있는 생성자뿐만 아니라 id를 제외한 멤버변수가 들어있는 생성자가 필요합니다. 그래서 빌더 패턴을 가진 생성자를 생성합니다.
  • @builder : 빌더 패턴으로 객체를 생성할 수 있도록 합니다. 빌더 패턴은 일반적으로 setter나 객체 생성 시 값을 넣어주는 것과 다르게 .userName("name") 같은 방식으로 값을 넣을 수 있습니다. 생성자로 객체를 생성하면 순서를 맞춰야하고, setter는 권장하지 않기 때문에 빌더 패턴을 사용하면 좋습니다.


참고하면 좋은 글

profile
헐 제가 회사를 다니면서 개발을 하고 있어요 이게 무슨 일이죠?

0개의 댓글