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