250x250
Notice
Recent Posts
Recent Comments
Link
관심쟁이 영호
[Spring Boot 기초] user 테이블 생성하기. 본문
반응형
이번 시간은 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
'Bank-End > 인프런- Spring 공부' 카테고리의 다른 글
[#17] Spring Bootㅣ 코드 분해하기 ㅣ Entity클래스? JPA? (0) | 2021.04.30 |
---|---|
[#16] Spring Boot ㅣ 완성한 프로젝트 기초부터 전부 뜯어보기 (0) | 2021.04.29 |
[#15] 스프링 부트, Spring Boot ㅣ 상품주문, 주문내역 (0) | 2021.04.19 |
[#14] Spring Boot ㅣ 상품 수정 구현하기 (0) | 2021.04.19 |
[#13] Spring Boot ㅣ 스프링 부트 ㅣ 웹 페이지 만들기 ㅣ html, css사용해서 매칭시키기 (0) | 2021.04.18 |
Comments