8월 5일 모각소 공부내용이다.
자바 스프링 부트에서
@표시를 어노테이션이라고 한다.
다음 코드를 보도록 하자.
package com.jerry.blog.model;
import java.sql.Timestamp;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import org.hibernate.annotations.ColumnDefault;
import org.hibernate.annotations.CreationTimestamp;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
//ORM -> Java(다른언어) Object -> 테이블로 매핑해주는 기술
@Entity // User 클래스가 MySQL에 테이블 생성
// @DynamicInsert // insert 시에 null인 필드를 제외시켜줌
public class User {
@Id //Primary key
@GeneratedValue(strategy = GenerationType.IDENTITY) // 프로젝트에서 연결된 DB의 넘버링 전략을 따라간다.
private int id; // 시퀀스, auto_increment
@Column(nullable = false, length = 30, unique = true)
private String username;
@Column(nullable = false, length = 100) // 123456 =>해쉬(비밀번호 암호화)
private String password;
@Column(nullable = false, length = 50)
private String email;
//@ColumnDefault("'user'")
//DB는 RoleType이라는 것이 없다
@Enumerated(EnumType.STRING)
private RoleType role; // Enum을 쓰는게 좋다. // ADMIN, USER
@CreationTimestamp // 시간이 자동 입력
private Timestamp createDate;
}
상당히 많은 어노테이션이 달려있다.
import 부분은 어노테이션을 하면 자동으로 작성됨을 유의하자.
우선 @Data는 @Getter와 @Setter가 합쳐진 것으로, 생성자를 자동으로 생성해준다. 즉, 생성자 메소드를 만들 필요가 없어진다. 또한 getvalue 메소드를 사용하여 값을 입력받을 수 있고, setvalue 메소드를 사용하여 값을 임의로 설정해 줄 수 있따.
@AllArgsConstructor는 해당 클래스의 변수들을 매개변수로 받는 생성자를 생성해준다. 다른 변수를 매개로 받는 생성자를 만들면 에러가 난다.
블로그를 만들것이기 때문에 변수를 db에서 넘버링 할 id, username, password, email, role, createDate등으로 설정해보았다. 여기서 id는회원가입시 자동으로 생성되고, role또한, USER로 고정이고, createDate는 타임스탬프로 생성 시간을 자동으로 입력해주므로, 실제 로그인시 입력받는것은 username, password, email이 되고 DB에 저장되는것은 id, username, password, email, role, createDate이 된다.
'[JAVA] 기본 문법' 카테고리의 다른 글
[JAVA] 제네릭 프로그래밍 (0) | 2023.02.07 |
---|---|
[JAVA] 자바 스트림 (0) | 2023.02.06 |
[JAVA] Enum (0) | 2022.07.30 |
[JAVA] 생성자 (0) | 2022.07.29 |
[JAVA] 정적 변수와 메소드 (0) | 2022.07.24 |
[JAVA] 접근 제어자 (0) | 2022.07.24 |
[JAVA] 자료형-문자열 (0) | 2022.07.17 |
[JAVA] 자료형-숫자 (0) | 2022.07.17 |