
Spring Data JPA를 사용하면 데이터베이스에 테이블을 생성하기 위한 쿼리를 작성할 필요가 없습니다.
이 기능을 가능하게 하는것이 엔티티이며, 엔티티는 데이터베이스의 테이블에 대응하는 클래스입니다.
예시로 아래와 같은 Product(상품) 테이블을 엔티티 클래스로 생성하기위한 어노테이션을 알아보겠습니다.

@Data
@Getter, @Setter, @ToString, @EqualsAndHashCode, @RequiredArgsConstructor 모두를 자동으로 적용해주는 어노테이션입니다.
@Entity
해당 클래스가 엔티티임을 명시하는 어노테이션
클래스는 테이블과 1대1로 매칭되며 해당 클래스의 인스턴스는 매핑되는 테이블에서 하나의 레코드를 의미합니다.
@Table
엔티티 클래스는 테이블과 매핑되므로 특별한 경우가 아니면 해당 어노테이션이 필요하지 않습니다.
@Table 어노테이션을 사용할 때는 클래스의 이름과 테이블의 이름을 다르게 지정해야하는 경우입니다.@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 테이블이 생성되었고 설정한 필드들이 생성된 것을 확인할 수 있습니다.
