엔티티 설계
Spring Data JPA의 엔티티 클래스를 사용하여 데이터베이스에 테이블을 생성해보자. 엔티티에는 데이터베이스에 쓰일 테이블과 컬럼을 정의한다.
상품 테이블 |
상품 번호 INT 상품 이름 VARCHAR 상품 가격 INT 상품 재고 INT 상품 생성 일자 DateTime 상품 정보 변경 일자 DateTime |
1. 엔티티 관련 기본 어노테이션
- @Entity: 해당 클래스가 엔티티임을 명시하기 위한 어노테이션. 클래스 자체는 테이블과 일대일로 매칭되며, 해당 클래스의 인스턴스는 매핑되는 테이블에서 하나의 레코드를 의미
- @Table: 엔티티 클래스는 자동으로 테이블과 매핑되므로 클래스의 이름과 테이블의 이름을 다르게 지정할 때 사용
- @Id: 엔티티 클래스의 필드는 테이블의 칼럼과 매핑된다. 테이블의 기본값 역할로 사용된다. 기본키라고 생각하자.
- @GeneratedValue: 일반적으로 @Id 어노테이션과 함께 사용. 해당 필드의 값 생성 방식을 결정한다.
- 사용x : 고유한 기본값을 생성할 경우 사용, 식별자로 사용
- AUTO: 기본 설정값, 데이터베이스에 맞게 자동 생성
- IDENTITY: 기본값 생성을 데이터베이스에 위임, AUTO_INCREMENT를 사용하여 기본값 생성
- SEQUENCE: @SequenceGenerator 어노테이션으로 식별자 생성기를 설정하고 이를 통해 값을 자동 주입받음
- TABLE: 어떤 DBMS를 사용하더라도 동일하게 동작하기를 원할 경우 사용
2. 엔티티 클래스
root 패키지 안에 data.entity 패키지를 생성하고 Product 엔티티 클래스를 생성한다.
package com.springboot.jpa.data.entity;
import javax.persistence.*;
import java.time.LocalDateTime;
@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;
...getter/setter... 생략
}
3. 리포지토리 인터페이스 생성
레포지토리(Repository)는 Spring Data JPA가 제공하는 인터페이스이다. 엔티티를 데이터베이스의 테이블과 구조를 생성하는 데 사용했다면 리포지토리는 엔티티가 생성한 데이터베이스에 접근하는데 사용된다. data.repository 패키지를 생성한 후에 ProductInterface 인터페이스를 생성해준다.
public interface ProductRepository extends JpaRepository<Product, Long> {
}
참고 문헌: 스프링 부트 핵심 가이드(스프링 부트를 활용한 애플리케이션 개발 실무)
http://www.yes24.com/Product/Goods/110142898
스프링 부트 핵심 가이드 - YES24
입문자의 눈높이에 맞춰 차근차근 따라 하면서 배우는 스프링 부트 입문서!《스프링 부트 핵심 가이드》는 스프링 부트 기반의 애플리케이션을 개발할 때 필요한 기초적인 내용들을 소개하고,
www.yes24.com
'Back-end > Springboot' 카테고리의 다른 글
[SpringBoot] DAO 연동을 위한 컨트롤러와 서비스 설계 (2) | 2023.05.08 |
---|---|
[SpringBoot] DAO 설계 (2) | 2023.05.04 |
[SpringBoot] 데이터 베이스 연동(Maria DB) (0) | 2023.05.04 |
[SpringBoot] JPA & 영속성 컨텍스트 (0) | 2023.05.04 |
[SpringBoot] ORM (1) | 2023.05.04 |