Cute Blinking Unicorn

백엔드/스프링부트

엔티티 클래스와 JpaRepository

민밥통 2024. 1. 9. 14:56

프로젝트에 entity패키지 추가하고 Memo 클래스를 정의 

 

Memo에다가

package org.zerock.ex2.entity;

import jakarta.persistence.*;
import lombok.*;

@Entity
@Table(name = "tb1_memo")
@ToString
@Getter
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class Memo {

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

    @Column(length = 200, nullable = false)
    private String memoText;
}

코드 작성하기

 

@Column 추가적인 필드(칼럼)이 필요할 경우 어노테이션을 활용한다. 

@Getter
@Builder
@AllArgsConstructor
@NoArgsConstructor

어노테이션 추가하고 필드를 2개 만들어야 한다. 

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

@Column(length = 200, nullable = false)
private String memoText;

@Builder 를 이용하기 위해서는 @AllArhsConstructor와 @NoArgsConstructor를 항상 같이 처리해야한다

(컴파일 에러가 발생하지 않음)

 

@Column과 반대로 데이터베이스 테이블에는 칼럼으로 생성되지 않는 필드의 경우에는

@Transient 어노테이션을 적용한다. 또한, @Column으로 기본 값을 지정하기 위해서 columnDefinition을 이용하기도 한다.

@Column(columnDefinition = "varchar(255) default 'Yes' ")

 

결과는

Hibernate: 
    create table tb1_memo (
        mno bigint not null auto_increment,
        memo_text varchar(200) not null,
        primary key (mno)
    ) engine=InnoDB

이렇게 나와야한다.