본문 바로가기

Back-end/Springboot

[SpringBoot] 엔티티, 리포지토리 인터페이스 설계

엔티티 설계

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