[Spring] 예제1 - 테이블 설계 및 생성
이전에 로그인 페이지와 회원가입 페이지 형태는 만들었다.
이제 회원가입 작업이 정상적으로 수행될 수 있도록 로직을 작성하여야 한다.
회원가입이 제대로 작동되는지 확인하기 이전에 우선 DB설계부터 수행하여야 한다.
→ 데이터베이스에 insert가 되어야 회원가입이 완료가 되는 것이기 때문에
ERD 생성
데이터베이스 스키마 정의
테이블 생성 Tip
테이블 생성 시 우선 primary key부터 생성한다.
insert할 때마다 시퀀스로 들어가도록 설정한다.
primary key는 항상 id로 한다.
테이블에 넣을 때 sysdate 값이 들어가는 칼럼을 추가해주는 것이 좋다.
테이블 생성
table "fp_member"
Oracle 접속
- 조건 -
무결성 제약 조건은 일단 최대한 설정하지 않고 테이블을 생성한다.
user_id는 원래 not null이고 unique하여야 하지만 이번 예제에서는 not null 제약조건만 추가한다. unique를 넣지는 않겠다.
ERD를 그릴 때 NOT NULL 제약조건을 설정하였지만
이번 예제에서 오라클에는 NOT NULL 제약조건을 설정하지 않을 것이다.
원래는 NOT NULL 제약조건을 넣어야 한다.
DDL 만들 때 DROP TABLE문도 작성해주는 것이 좋다.
테이블 생성
DDL은 생성하는 순간 COMMIT된다.
-- 최종 예제 DDL
DROP TABLE fp_member;
CREATE TABLE fp_member(
id number PRIMARY KEY,
user_id VARCHAR2(20),
user_pw VARCHAR2(120),
nickname VARCHAR2(20),
gender VARCHAR2(1),
email VARCHAR2(400),
birth DATE,
phone VARCHAR2(20),
reg_date DATE
);
시퀀스 생성
ID: 대리 키
DROP SEQUENCE fp_member_seq;
CREATE SEQUENCE fp_member_seq;
INSERT문 실행
-- 테스트 코드
-- 회원 가입 SQL
INSERT INTO fp_member VALUES(
fp_member_seq.nextval,
's98979',
'12345',
'한조3',
'M',
's00@gmail.com',
'01-01-01',
'010-1231-2312',
SYSDATE
);
첫번째와 마지막 칼럼을 제외하고는사용자가 입력해야하는 값이다.
SELECT * FROM fp_member;
출력 결과
이제 테이블 생성을 완료하였고 INSERT문까지 제대로 작동되는지 실행하였다.
테이블 생성 후 무조건 해야 하는 작업은 DTO 클래스를 생성하여야 한다.
DTO 생성
DTO: 데이터의 형태를 묶을 용도로 사용하는 것
dto는 한쪽 폴더에 몰아서 생성한다.
date는 일반적으로 java.util.Date로 불러온다.
그리고 자바 빈 표준에 맞는 Getter, Setter를 만들어주어야 한다.
✍ dto/MemberDto.java
package com.ja.finalproject.dto;
import java.util.Date;
public class MemberDto {
private int id;
private String user_id;
private String user_pw;
private String nickname;
private String gender;
private String email;
private Date birth;
private String phone;
private Date reg_date;
public MemberDto() {
super();
}
public MemberDto(int id, String user_id, String user_pw, String nickname, String gender, String email, Date birth,
String phone, Date reg_date) {
super();
this.id = id;
this.user_id = user_id;
this.user_pw = user_pw;
this.nickname = nickname;
this.gender = gender;
this.email = email;
this.birth = birth;
this.phone = phone;
this.reg_date = reg_date;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUser_id() {
return user_id;
}
public void setUser_id(String user_id) {
this.user_id = user_id;
}
public String getUser_pw() {
return user_pw;
}
public void setUser_pw(String user_pw) {
this.user_pw = user_pw;
}
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Date getBirth() {
return birth;
}
public void setBirth(Date birth) {
this.birth = birth;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public Date getReg_date() {
return reg_date;
}
public void setReg_date(Date reg_date) {
this.reg_date = reg_date;
}
}
DB를 정의하는 순간, DTO도 만들어주어야 한다.