관심쟁이 영호

[Spring Boot 기초] user 테이블 생성하기. 본문

Bank-End/인프런- Spring 공부

[Spring Boot 기초] user 테이블 생성하기.

관심쟁이 영호 2021. 4. 20. 02:10
반응형

이번 시간은 user 테이블을 만들어볼 계획이다.

 

코드를 바로 보자.

// User.java

@Entity //User 클래스가 스프링이 시작할 때, MySQL에 테이블을 생성한다.
public class User {
	
	
	@Id //Primary key
	//프로젝트에서 연결된db의 넘버링 전략을 따라간다.  -> 오라클이나 mysql에 따라 바뀐다는 뜻이다.
	@GeneratedValue(strategy = GenerationType.IDENTITY) 
	private int id; // 시퀀스, auto_increment
	
	
	@Column(nullable = false, length = 30)
	private String username; // 아이디
	
	@Column(nullable = false, length = 100) // -> 비밀번호를 암호화 하기위해서 해쉬를 사용해야 한다.
	private String password;
	
	
	@Column(nullable = false, length = 50)
	private String email;
	
	
	@ColumnDefault("user")
	//Enum을 쓰는게 좋다. 이유는 도메인을 생성할 수 있어서, admin- 일반유저 - manager 등등을 표시할 수 있다.
	private String role; 
	
	@CreationTimestamp //시간 자동입력
	private Timestamp createDate;

}

주석에 표시가 되어있지만 하나하나씩 짚어보자.

 

@Entity:

해당 클래스를 스프링이 시작될 때, DB에 테이블로 생성해달라고 하기위한 어노테이션이다.

 

@Id:

이렇게 입력하면 스프링이 DB에 입력할 때, 해당 어노테이션 설정이 되어있는 값을 Primary key값으로 설정해준다.

 

@GeneratedValue(strategy = GenerationType.IDENTITY) :

이 어노테이션의 뜻은 어떠한 DB가 입력되어도, 해당 입력에 따라서 시퀀스값을 올리는 문구를 생성해달라는 뜻이다.

application.yml에 jpa부분에 이러한 설정이 되어있는데, 이 어노테이션을 추가하면 해당하는 값을 무시하고 새로운 전략으로 해준다.

 

@Column(nullable = false, length = 30)

컬럼하나의 속성을 적용시키는 것이다.

null을 받지 않고, 길이는 30으로 제한 해달라는 뜻이다.

 

@ColumnDefault("user")

다른 설정을 하지않으면 해당하는 row를 생성할 때, user을 기본값으로 해달라는 뜻이다.

 

@CreationTimestamp

생성할 때의 시간을 자동으로 입력해달라는 뜻이다.

 

이렇게 코드를 짜고 run을 시켜보면 아래와 같이 쿼리문이 생성된 것을 볼 수 있다.

300x250
Comments