1.user entity
package com.cos.blog.model;
import org.hibernate.annotations.ColumnDefault;
import org.hibernate.annotations.CreationTimestamp;
import javax.persistence.*;
import java.sql.Timestamp;
@Entity//user 클래스가 MySQL에 테이블 생성이 된다
public class User {
@Id //primary key
@GeneratedValue(strategy = GenerationType.IDENTITY) // 프로젝트에서 연결된 db의 넘버링 전략을 따라간다.
private int id; // 시퀀스,auto_increment
@Column(nullable = false, length = 30)
private String username;//아이디
// 패스워드를 해쉬로 변경해서 암호화할거라서, 넉넉하게 100으로 준다
@Column(nullable = false, length = 100)
private String password;
@Column(nullable = false, length = 50)
private String email;
@ColumnDefault("'user'")//"''"=> 안에 있는게 문자열임을 알려준다.
private String role; //Enum을 쓰는게 좋음
// => admin, user, manager 등의 역할부여시 String이라면 managerrr 등의 오타 낼 수 있음
// 그러나 enum을 쓸 경우 domain(범위)을 쓸 수 있기 때문에 오타낼 걱정 x
@CreationTimestamp //시간이 자동 입력됨 (mysql: now나 oracle: sysdate를 안써도됨)
private Timestamp createDate;
}
2.application.yml
server:
port: 8090
servlet:
context-path: /blog
encoding:
charset: UTF-8
enabled: true
force: true
spring:
mvc:
view:
prefix: /WEB-INF/views/
suffix: .jsp
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/blog?serverTimezone=Asia/Seoul
username: cos
password: cos1234
jpa:
open-in-view: true
hibernate:
# ddl-auto: create 프로젝트 실행시 마다 테이블을 새로 만든다는거임,
# 최초 실행시만 저렇게 하고 나중에 update로 바꾼다
ddl-auto: create
naming:
physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
# jpa가 사용하는 기본 넘버링 전략을 따라가지 않는다.
use-new-id-generator-mappings: false
# 쿼리 보여주기
show-sql: true
# 쿼리 줄바꿈해서 예쁘게 보여주기
properties:
hibernate.format_sql: true
jackson:
serialization:
fail-on-empty-beans: false
ddl-auto : create인지 확인 후
실행 전 서비스에서 mysql이 실행중인지 체크, 실행중이어야 테이블 생성 가능
이제 실행하면?
drop table => ddl auto : create라서 테이블 있거나 말거나 비우고 매번 새로 만들어주기 때문에 뜨는 것
PhysicalNamingStrategyStandardImpl
=> 필드 네임 그대로 db 컬럼이름 생성(다른 전략쓰면 카멜, 스네이크 등으로 바꿀 수 있다)
3. mysql에서 확인하기
orm => java(다른 언어도!) Object => 테이블로 매핑해줌
user클래스에 이름 바꾸는 대로 족족 바로 db에 만들어짐 대박 편하다.
'프로젝트 > 개인' 카테고리의 다른 글
5. 더미데이터 delete테스트+exception처리+ 무한참조방지 (0) | 2023.07.30 |
---|---|
4. JSON 사용법+ 회원가입 위한 INSERT 테스트 (0) | 2023.07.28 |
2.yaml, yml(야믈..?) 설정 (0) | 2023.07.25 |
1. mysql 환경세팅하기 (0) | 2023.07.25 |
0.프로젝트 생성 (0) | 2023.07.20 |