springboot - blog project (18)

Yuri Lee·2020년 8월 21일
0

springboot - blog project

목록 보기
10/49

스프링부트 강좌 18강(블로그 프로젝트) - User테이블 생성

  1. Blog 테이블 만들기 (User, Board, Reply)
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를 테이블로 매핑해주는 기술이다.

  1. 연관관계 만들기

  2. 더미 데이터 insert
    @DynamicInsert insert할때 null 인 필드 제외

  3. 더미 데이터 select 및 응답

-이 글은 유투버 겟인데어의 스프링 부트 강좌를 바탕으로 정리한 내용입니다.-

profile
Step by step goes a long way ✨

0개의 댓글