Entity Class

Entity 클래스는 데이터베이스와 맞닿는 핵심 클래스로 Entity 클래스를 기준으로 테이블과 스키마가 생성된다.

package com.springbootaws.book.springboot.domain.user;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;

import javax.persistence.*;

@Getter
@NoArgsConstructor
@Entity
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(nullable = false)
    private String name;

    @Column(nullable = false)
    private String email;

    @Column
    //사진은 기본적으로 string으로 받아올 수 있다.(사진이 저장된 url을 받아옴)
    private String picture;

    //Enumerated : 열거체를 DB에 저장할 수 있도록 한다.
    // EnumType.STRING : DB에 enum의 name 값(string)을 저장
    // EnumType.ORIGINAL DB에 enum의 서순 값(int)을 저장
    @Enumerated(EnumType.STRING)
    @Column(nullable = false)
    private Role role;

    @Builder
    public User(String name, String email, String picture, Role role){
        this.name=name;
        this.email=email;
        this.picture=picture;
        this.role=role;
    }

    // springboot의 영속성 컨테이너 ==> @Transactional이 종료된 후 변경된 데이터가 DB에 저장됨
    public User update(String name, String picture){
        this.name=name;
        this.picture=picture;
        return this;
    }

    public String getRoleKey(){
        return this.role.getKey();
    }
}

테이블 칼럼 생성 방법

@id : 해당 필드가 테이블의 pk(주로 id)임을 나타냄

@GeneratedValue(strategry=?) : pk 생성 규칙 명시

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

@Column : 해당 필드가 테이블의 일반 칼럼임을 나타냄 ( default : VARCHAR(255) )

@Entity
public class EntityClass{
	// VARCHAR(255)
	private String column1;
	
	@Column(nullable=false, length=100, columnDefinition="TEXT")
	private String column2;
}

자바의 enum 타입을 저장하는데 사용된다.

  1. enum (열거형)

서로 연관 있는 상수들을 모아서 상수를 대표하는 이름으로 타입 지정

public enum DevType{
	MOBILE, WEB, SERVER
}

선언된 순서대로 순서 값 0, 1, 2 값을 갖는다.

{enum}.{상수명}으로 enum의 이름을 가져올 수 있다. (MOBILE, WEB 등)

{enum}.{상수명}.ordinal()으로 enum의 순서를 가져올 수 있다. (0, 1 등)