회원의 정보를 가지는 테이블을 만들어주기 위해 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
: 모든 멤버변수를 가지고 있는 생성자를 생성합니다.@Id
: 해당 어노테이션이 붙은 멤버변수는 PK(Primary Key)라는 뜻입니다. 기본적으로 null과 중복값이 허용되지 않습니다.@GeneratedValue(strategy = GenerationType.IDENTITY)
: @Id와 같이 쓰는 어노테이션입니다. pk의 생성전략을 정하는 역할입니다. strategy 속성은 어떤 식으로 값을 넣어줄 지 정할 수 있습니다. GenerationType.IDENTITY는 흔히 말하는 AUTO_INCREMENT와 같은 기능을 합니다.@Column
: 객체의 멤버변수를 테이블의 컬럼에 연결합니다. length 속성은 해당 변수의 최대 길이를 나타냅니다. nullable 속성은 null 허용 여부를 결정합니다. true는 허용, false는 허용 안함을 뜻합니다.@builder
: 빌더 패턴으로 객체를 생성할 수 있도록 합니다. 빌더 패턴은 일반적으로 setter나 객체 생성 시 값을 넣어주는 것과 다르게 .userName("name") 같은 방식으로 값을 넣을 수 있습니다. 생성자로 객체를 생성하면 순서를 맞춰야하고, setter는 권장하지 않기 때문에 빌더 패턴을 사용하면 좋습니다.