[Spring Boot] 스프링 부트 엔티티 설계- 10 (Entity)

권경환·2024년 3월 11일
0

JAVA

목록 보기
10/13
post-thumbnail

Spring Data JPA

Spring Data JPA를 사용하면 데이터베이스에 테이블을 생성하기 위한 쿼리를 작성할 필요가 없습니다.
이 기능을 가능하게 하는것이 엔티티이며, 엔티티는 데이터베이스의 테이블에 대응하는 클래스입니다.

예시로 아래와 같은 Product(상품) 테이블을 엔티티 클래스로 생성하기위한 어노테이션을 알아보겠습니다.

@Data
@Getter, @Setter, @ToString, @EqualsAndHashCode, @RequiredArgsConstructor 모두를 자동으로 적용해주는 어노테이션입니다.

@Entity
해당 클래스가 엔티티임을 명시하는 어노테이션
클래스는 테이블과 1대1로 매칭되며 해당 클래스의 인스턴스는 매핑되는 테이블에서 하나의 레코드를 의미합니다.

@Table
엔티티 클래스는 테이블과 매핑되므로 특별한 경우가 아니면 해당 어노테이션이 필요하지 않습니다.

  • @Table 어노테이션을 사용할 때는 클래스의 이름과 테이블의 이름을 다르게 지정해야하는 경우입니다.
    서로 다른 이름을 쓰려면 @Table(name = 값) 형태로 데이터베이스의 테이블 명을 명시해야 합니다.

@id
엔티티 클래스의 필드는 테이블의 칼럼과 매핑되며 해당 어노테이션이 선어된 필드는 테이블의 기본값 역할로 사용됩니다.

@column
엔티티 클래스의 필드는 자동으로 테이블 칼럼으로 매핑되어서 별다른 설정을 하지 않아도 되지만 필드에 추가적인 설정을 할 때 사용됩니다.

  • name : 데이터베이스의 칼럼명을 설정하는 속성
  • nullable : 레코드를 생성할때 칼럼 값에 null 처리가 가능한지 명시하는 속성
  • length : 데이터베이스에 저장하는 데이터의 최대 길이를 설정
  • unique : 해당 칼럼을 유니크로 설정합니다.

예제코드

package com.springboot.study02.data.entity;

import javax.persistence.*;
import java.net.InterfaceAddress;
import java.time.LocalDateTime;
import io.swagger.annotations.ApiParam;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

@Data
@Entity
@Table(name = "product")
public class Product {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long number;

    @Column(nullable = false)
    private String name;

    @Column(nullable = false)
    private Integer price;

    @Column(nullable = false)
    private Integer stock;

    private LocalDateTime createdAt;

    private LocalDateTime updatedAt;


}

결과 테이블

아래와 같이 product 테이블이 생성되었고 설정한 필드들이 생성된 것을 확인할 수 있습니다.

profile
성장을 좋아하는 주니어 개발자의 블로그

0개의 댓글