스프링부트 강좌 18강(블로그 프로젝트) - User테이블 생성
package com.yuri.blog.model;
import java.sql.Timestamp;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import org.hibernate.annotations.ColumnDefault;
import org.hibernate.annotations.CreationTimestamp;
@Entity //User 클래스가 MySQL에 테이블이 자동 생성이 된다.
public class User {
@Id //Primary key
@GeneratedValue(strategy=GenerationType.IDENTITY) //프로젝트에서 연결된 DB의 넘버링 전략을 따라간다.
//oracle : sequence, mysql : auto_increment 로 간다는 뜻~
private int id; // 시퀀스, auto_increment
@Column(nullable = false, length = 30)
private String username; //아이디
@Column(nullable = false, length = 100) // 123456 => 해쉬(비밀번호 암호화)
private String password;
@Column(nullable = false, length = 50)
private String email;
@ColumnDefault("'user'")
private String role; // Enum을 쓰는 게 좋다. 왜? 도메인을 만들 수 있음
//admin, user, manager 권한을 줘서... 실수로 managerrrr 로 오타를 낼 수도 있다.
//enum을 사용하면 도메인을 설정할 수 있다. 어떤 범위가 정해졌다는 것을 의미
@CreationTimestamp //시간이 자동 입력 , 회원가입을 할때 위의 정보들이 다 insert 될 때 id 부분을 비워놓아도 자동으로 들어감, Timestamp 이것도
private Timestamp createDate;
}
application.yml 에서
jpa:
open-in-view: true
hibernate:
ddl-auto: create
naming:
physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
use-new-id-generator-mappings: false
# jap 가 사용하는 기본 넘버링 전략을 따라가지 않겠다는 의미
show-sql: true #console 창에서 확인할 수 있음
properties:
hibernate.format_sql: true # console 창에서 예쁘게 정렬된 모습으로 출력
ddl-auto: create 이 부분이 create가 되어있는지 확인해야 한다.
PhysicalNamingStrategyStandardImpl : 테이블을 만들 때 변수명 그대로 테이블의 필드를 만들어 준다는 의미이다.
이거 대신 orm.jpa.hibernate.SpringPhysicalNamingStrategy 전략을 사용하게 되면...?
myEmail -> myemail 언더바를 넣어준다. 추가로...!!
orm 이라는 것은 Java(다른 언어포함) object를 테이블로 매핑해주는 기술이다.
연관관계 만들기
더미 데이터 insert
@DynamicInsert insert할때 null 인 필드 제외
더미 데이터 select 및 응답
-이 글은 유투버 겟인데어의 스프링 부트 강좌를 바탕으로 정리한 내용입니다.-