SpringBoot(JPA,Gradle)

[SpringBoot] DB테이블 연결할 Class 생성

에띠 2022. 6. 22. 10:50
728x90

Lombok

- 테이블을 구조화한 도메인 클래스(Entity, DTO, VO) 에서 getter/setter 메소드, toString(), equals, hashCode 등의 메서드를 어노테이션으로 사용할 수 있도록 해주는 라이브러리
    @Data : 자동으로 getter/setter를 사용할 수 있게 해줌
    @AllArgsConstructor : 모든 매개변수를 지원하는 생성자를 생성
    @NoArgsConstructor : 매개변수를 갖지않는 기본 생성자를 생성
    @Entity : DB 테이블과 연결하는 클래스
    @SequenceGenerator : DB 시퀀스와 연결
    @Builder : 복합 객체의 생성 과정과 표현 방법을 분리하여 동일한 생성 절차에서 서로 다른 표현의 결과를 만들 수 있도록 패턴을 사용할 수 있음(자바의 메소드체이닝을 사용할 수 있게 해줌)

model 패키지 생성 > entity 패키지 생성

테이블명과 동일하게 클래스 생성(클래스의 앞글자는 대문자로 설정)

 

[AdminUser 클래스]

테이블 명, 테이블 컬럼명에 '_'가 들어갈 경우 카멜표기법 적용(예 : user_id > userId)

package com.etty.day2.model.entity;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.*;
import java.time.LocalDateTime;

@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@SequenceGenerator(
        name="seq_admin",
        sequenceName = "seq_admin", // 실제 DB 시퀀스 명
        initialValue = 1, // 시작 값
        allocationSize = 1 // 증가 값
)
@Builder
public class AdminUser { // 클래스명은 DB 테이블명과 같아야 함. '_'가 들어갈 경우 카멜표기법

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "seq_admin") // id에 시퀀스 연결
    private Long id;
    private String userid;
    private String userpw;
    private String name;
    private String status;
    private String createBy;
    private LocalDateTime lastLogin;
    private LocalDateTime regDate;


}

 

 

@GeneratedValue

- 데이터베이스 마다 쓰는 방식이 다름.

- Oracle

@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "시퀀스명")
private Long id;

- mySQL

@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

 

728x90