스프링 부트로 구현하는 웹서비스 - 4

Bumgu·2023년 7월 15일
0

package com.kelly.springbootkelly.domain.posts;

import lombok.Builder;  
import lombok.NoArgsConstructor;  
  
import javax.persistence.*;  
  
@NoArgsConstructor  
@Entity  
public class Posts {  
  
@Id  
@GeneratedValue(strategy = GenerationType.IDENTITY)  
private Long id;  
  
@Column(length = 500, nullable = false)  
private String title;  
  
@Column(columnDefinition = "TEXT", nullable = false)  
private String content;  
  
private String author;  
  
@Builder  
public Posts(String title, String content, String author) {  
this.title = title;  
this.content = content;  
this.author = author;  
}

이러한 클래스를 Entity클래스라 한다.

실제 DB의 테이블과 매칭될 클래스이다.

Entity

  • 테이블과 링크될 클래스임을 나타냄
  • 기본값으로 클래스의 카멜케이스 이름은 언더스코어 네이밍 으로 이름을 매칭함.

Id

  • 해당 테이블의 PK(Primary Key, 기본키)필드를 나타냄.

GeneratedValue

  • PK의 생성 규칙을 나타냄.
  • 스프링부트 2.0에선 GeneratedType.IDENTITY 옵션을 추가해야만 auto_increment가 됨

Column

  • 테이블의 칼럼을 나타내며 굳이 선언하지 않더라도 해당클래스의 필드는 모두 칼럼이 됨
  • 사용하는 이유는, 기본값 외에 추가로 변경잎 리요한 옶션이 있으면 사용.
  • 문자열의 경우 Varchar(255)가 기본값인데, 사이즈를 500으로 늘리고 싶거나 타입을 Text로 변경하고 싶거나 등의 경우에 사용됨

Builder

  • 해당 클래스의 빌더 패턴 클래스를 생성
  • 생성자 상단에 선언 시, 생성자에 포함된 필드만 빌더에 포함
profile
Software VS Me

0개의 댓글