0. MariaDB - JPA 매핑을 위한 엔티티
MariaDB와 Spring Boot를 연동하기 위해 Spring Data JPA를 사용한다. 여기서 Entity는 스키마를 정의하고 DB와 연동하기 위해 사용한다.
package com.web.springtest00.data.entity;
import java.time.LocalDateTime;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import lombok.Data;
@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;
}
| @Data | Lombok의 어노테이션 getter/setter, toString(), hashCode() 등의 메서드를 자동으로 생성해준다. |
| @Entity(name = "엔티티명") | Entity임을 선언하는 어노테이션 |
| @Table(name = "테이블명") | Table임을 선언하는 어노테이션 name이 생략될 경우 Entity의 name을 사용한다. |
| @Id | 기본 키 설정 |
| @GeneratedValue(strategy = GenerationType.IDENTITY) | 기본 키 자동 생성 어노테이션 strategy 옵션은 자동 생성 전략으로 GenerationType.IDENTITY는 기본 키 생성을 DB에 위임하는 전략이다. |
| @Column(nullable = false) | 컬럼 설정 nullable 옵션은 컬럼의 NOT NULL 제약사항 여부를 설정한다. |
* 시퀀스의 사용
@SequenceGenerator 어노테이션을 사용해 시퀀스를 생성하고 사용하는 것도 가능하다.
@SequenceGenerator(
name = "SEQ_PRODUCT",
sequenceName = "SEQ_PRODUCT",
initialValue = 1,
allocationSize = 1
)
public class Product {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE,
generator = "SEQ_PRODUCT")
private Long number;
...
}
| @SequenceGenerator | 시퀀스 생성 어노테이션 |
| name | 시퀀스 이름 (식별자) |
| sequenceName | DB에서의 시퀀스 이름 |
| initialValue | 시퀀스 시작 값 |
| allocationSize | 시퀀스 증가 값 |
| strategy = GenerationType.SEQUENCE | 시퀀스를 사용해 기본 키를 자동 생성 |
| generator = "시퀀스 이름" | 사용할 시퀀스 이름 @SequenceGenerator의 name과 일치시켜야 한다. |
'Java > Spring Boot' 카테고리의 다른 글
| [Spring Boot] DAO 생성 (0) | 2023.03.28 |
|---|---|
| [Spring Boot] DTO 생성 (0) | 2023.03.28 |
| [Spring Boot] Repository 생성 (0) | 2023.03.28 |
| [Spring Boot] application.properties 설정 (0) | 2023.03.28 |
| [Spring Boot] VSCode로 시작하기 (0) | 2023.03.27 |