개발 일기
JAVA 게시판 만들기 1 탄 (feat. aquerytool 테이블 설계, DTO 클래스 만들기 ) 본문
JAVA 게시판 만들기 1 탄 (feat. aquerytool 테이블 설계, DTO 클래스 만들기 )
개발 일기 2021. 8. 19. 22:49안녕하세요.
제가 한동안 블로그를 쓰지 못했는데 ㅠㅠ,,
그 이유가 어제 올렸듯이 시험도 있었고(이번 주말에 또 있고..ㅠ)
다른 이유중에 하나는 현재 제가 수강하고 있는 수업에서 이제 세미프로젝트를 팀별로 하나 진행을 하고 있어요.
그래서 저희 팀은 '전자도서관'의 컨셉으로 개발을 시작했고 현재 분업화해서 모두 바쁘게 작성중에 있습니다.
그 중에 저는 QNA 게시판 영역을 담당하게 되었구요.
그래서 제가 작성해나가고 있는 코드를 공유해보도록 하겠습니다.
1. ERD(테이블)설계
//화면정의서와 요구사항 명세서 작성 후 ERD 작성
우선 자바 코딩에 앞서 전체적인 서비스를 제공하기 위한
ERD(개체-관계 모델(Entity Relationship Model))를 팀원들과 작성을 해보았습니다.
화면 공유와 수정이 수월한 에이쿼리 툴을(https://aquerytool.com/) 활용해서 작성을 했습니다.
제가 QNA 게시판을 만드는데 사용하게 될 DB 테이블의 ERD 모델입니다.
'전자도서관' 컨셉으로 회원을 중심으로 서비스가 이루어지게되며,
QNA와 REPLY에 회원번호를 FK(외래키)설정을 해주었습니다.
SQL문 변환 시 QNA, REPLY TABLE 생성 SQL문
CREATE TABLE QNA
(
qna_no NUMBER(3) NOT NULL,
member_no NUMBER(3) NOT NULL,
qna_title VARCHAR2(150) NOT NULL,
qna_content VARCHAR2(4000) NOT NULL,
qna_reg_date DATE DEFAULT SYSDATE NOT NULL,
qna_visible NUMBER(1) DEFAULT 1 NOT NULL,
qna_file VARCHAR2(256) NULL,
qna_views NUMBER(4) DEFAULT 0 NOT NULL,
CONSTRAINT PK_QNA PRIMARY KEY (qna_no)
)
CREATE TABLE REPLY
(
reply_no NUMBER(3) NOT NULL,
reply_content VARCHAR2(4000) NOT NULL,
qna_no NUMBER(3) NOT NULL,
member_no NUMBER(3) NOT NULL,
CONSTRAINT PK_REPLY PRIMARY KEY (reply_no)
)
2. QNA, REPLY의 DTO 클래스 생성
위에서 이제 ERD 설계에 따른 SQL 테이블을 생성을 완료 했다면,
JAVA에서 사용 할 수 있도록 클래스 설계를 시작합니다.
그 중 맨 처음으로 해주어야 할 단계인 DTO(VO)클래스 생성을 해보겠습니다.
- QNA DTO 클래스 생성
package com.itwill.librarian.domain;
import java.util.Date;
import java.util.List;
public class Qna {
private int qnaNo;
private int memberNo;
private String qnaTitle;
private String qnaContent;
private Date qnaRegDate;
private int qnaVisible;
private String qnaFile;
private int qnaViews;
private int qna_reply_count;
private List<Reply> replys;
public Qna() {
}
public Qna(int qnaNo, String qnaTitle, Date qnaRegDate, int qnaVisible, String qnaFile, int qnaViews) {
super();
this.qnaNo = qnaNo;
this.qnaTitle = qnaTitle;
this.qnaRegDate = qnaRegDate;
this.qnaVisible = qnaVisible;
this.qnaFile = qnaFile;
this.qnaViews = qnaViews;
}
public Qna(int qnaNo, int memberNo, String qnaTitle, String qnaContent, Date qnaRegDate, int qnaVisible,
String qnaFile, int qnaViews) {
super();
this.qnaNo = qnaNo;
this.memberNo = memberNo;
this.qnaTitle = qnaTitle;
this.qnaContent = qnaContent;
this.qnaRegDate = qnaRegDate;
this.qnaVisible = qnaVisible;
this.qnaFile = qnaFile;
this.qnaViews = qnaViews;
}
public int getQna_reply_count() {
return qna_reply_count;
}
public void setQna_reply_count(int qna_reply_count) {
this.qna_reply_count = qna_reply_count;
}
public List<Reply> getReplys() {
return replys;
}
public void setReplys(List<Reply> replys) {
this.replys = replys;
}
public int getQnaNo() {
return qnaNo;
}
public void setQnaNo(int qnaNo) {
this.qnaNo = qnaNo;
}
public int getMemberNo() {
return memberNo;
}
public void setMemberNo(int memberNo) {
this.memberNo = memberNo;
}
public String getQnaTitle() {
return qnaTitle;
}
public void setQnaTitle(String qnaTitle) {
this.qnaTitle = qnaTitle;
}
public String getQnaContent() {
return qnaContent;
}
public void setQnaContent(String qnaContent) {
this.qnaContent = qnaContent;
}
public Date getQnaRegDate() {
return qnaRegDate;
}
public void setQnaRegDate(Date qnaRegDate) {
this.qnaRegDate = qnaRegDate;
}
public int getQnaVisible() {
return qnaVisible;
}
public void setQnaVisible(int qnaVisible) {
this.qnaVisible = qnaVisible;
}
public String getQnaFile() {
return qnaFile;
}
public void setQnaFile(String qnaFile) {
this.qnaFile = qnaFile;
}
public int getQnaViews() {
return qnaViews;
}
public void setQnaViews(int qnaViews) {
this.qnaViews = qnaViews;
}
@Override
public String toString() {
return "Qna [qnaNo=" + qnaNo + ", memberNo=" + memberNo + ", qnaTitle=" + qnaTitle + ", qnaContent="
+ qnaContent + ", qnaRegDate=" + qnaRegDate + ", qnaVisible=" + qnaVisible + ", qnaFile=" + qnaFile
+ ", qnaViews=" + qnaViews + ", qna_reply_count=" + qna_reply_count + ", replys=" + replys + "]";
}
}
- DB에 만든 컬럼에 맞추어 변수를 생성한 뒤 생성자와 getter, setter 설정을 합니다.
- REPLY(댓글)쪽 데이터를 활용 할 경우에 맞춰 '댓글 수' 변수와 댓글리스트 변수를 설정합니다.
- REPLY DTO 클래스 생성
package com.itwill.librarian.domain;
public class Reply {
private int replyNo;
private String replyContent;
private int qnaNo;
private int memberNo;
public Reply() {
}
public Reply(int replyNo, String replyContent, int qnaNo, int memberNo) {
super();
this.replyNo = replyNo;
this.replyContent = replyContent;
this.qnaNo = qnaNo;
this.memberNo = memberNo;
}
public int getReplyNo() {
return replyNo;
}
public void setReplyNo(int replyNo) {
this.replyNo = replyNo;
}
public String getReplyContent() {
return replyContent;
}
public void setReplyContent(String replyContent) {
this.replyContent = replyContent;
}
public int getQnaNo() {
return qnaNo;
}
public void setQnaNo(int qnaNo) {
this.qnaNo = qnaNo;
}
public int getMemberNo() {
return memberNo;
}
public void setMemberNo(int memberNo) {
this.memberNo = memberNo;
}
@Override
public String toString() {
return "Reply [replyNo=" + replyNo + ", replyContent=" + replyContent + ", qnaNo=" + qnaNo + ", memberNo="
+ memberNo + "]";
}
}
- QNA와 마찬가지로 DB에 만든 컬럼에 맞추어 변수를 생성한 뒤 생성자와 getter, setter 설정을 합니다.
오늘은 ERD모델 설계와 DB 테이블 생성 후
JAVA DTO 클래스까지 만드는 내용을 정리해보았습니다.
감사합니다.
'Project 1. 게시판 만들기' 카테고리의 다른 글
JAVA 게시판 만들기 5 탄 (feat. jsp페이지 적용하기) (0) | 2021.08.31 |
---|---|
JAVA 게시판 만들기 4 탄 (feat. PageMaker DTO, DAO 클래스 추가 & SERVICE 클래스 만들기) (0) | 2021.08.30 |
JAVA 게시판 만들기 3 탄 (feat. DAO 클래스 만들기 2 (DB관련 필요 서비스 내용 + 댓글(reply) 추가하기) ) (0) | 2021.08.22 |
JAVA 게시판 만들기 2 탄 (feat. DAO 클래스 만들기 (CRUD 구현하기) ) (0) | 2021.08.20 |