package com.example.spring.portfolio.model;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.sql.Timestamp;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id; // primary key
private String username; // 사용자 아이디
private String password; // 회원 비밀번호
private String email; // 이메일
private boolean admin; // 관리자 여부
private Timestamp createDate; // 계정 생성 시간
}
어노테이션
- @Data: 롬복에서 제공하는 어노테이션으로 클래스의 모든 필드에 대한 getter,setter,equals,hashcode,toString등의 메서드를 자동으로 제공합니다.
- @NoArgsConstructor: 롬복 어노테이션으로,파라미터가 없는 기본 생성자를 자동으로 생성합니다.
- @AllArgsConstructor: 롬복 어노테이션으로,모든 필드를 인자로 받는 생성자를 자동으로 생성한다.
- @Builder: 롬복 어노테이션으로,빌더 패턴을 자동으로 생성하여 객체를 생성할 때 빌더를 사용할 수 있도록 합니다.
- @Entity: JPA에서 엔티티 클래스임을 나타내는 어노테이션으로 해당 클래스가 데이터베이스의 테이블과 매핑되는 엔티티임을 나타냅니다.
- @Id: 엔티티 클래스에서 주키를 지정하는 어노테이션으로,해당 필드의 엔티티의 주키로 사용함을 나타낸다.
- @GeneratedValue: 주키 값의 생성 전략을 지정하는 어노테이션으로,여기서는 IDENTITY 전략을 사용하여 데이터베이스가 자동으로 주키 값을 생성하도록 한다.
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id; // primary key
@Column(nullable = false , length = 30) // nullable 데이터베이스에서 null이 가능한지 , 최대 길이 설정
private String username; // 사용자 아이디
@Column(nullable = false , length = 30)
private String password; // 회원 비밀번호
@Column(nullable = false , length = 30)
private String email; // 이메일
@Column(nullable = false,columnDefinition = "BOOLEAN DEFAULT false") // boolean 값 default 설정
private boolean admin; // 관리자 여부
@CreationTimestamp
private Timestamp createDate; // 계정 생성 시간
}
어노테이션
- @Column: 컬럼의 규칙을 설정할 수 있는 어노테이션 입니다.
- nullable : 해당 컬럼이 생성 될때 null을 허용할 것인가
- length : String 문자열의 최대 길이 지정
- columnDefinition : DB의 기본정보를 직접 줄 수 있음
- @CreationTimestamp : 객체가 생성될때 생성되는 시간 자동으로 등록하는 어노테이션
자바 스프링에서 데이터베이스를 사용하기 위해서는 JPA 설정을 해야한다.
resource 폴더에 있는 application.properties 파일에 추가하면 된다.

driver-class-name: 사용할 데이터베이스 명시
datasource.url : db를 사용하고 있는 url 명시
datasource.username: 데이터베이스 사용자 이름
datasource.password : 데이터베이스 비밀번호