DB의 작업을 마쳤으니 이제는 VO와 DAO를 손 볼 차례이다. Book테이블에 너무 많은 필드를 만들어 놓아서 살짝 한 숨이 나온다...
[ ⅰ: VO ]
우선 Member 테이블의 VO 작업부터 수행한다. VO의 작업은 다음의 순서로 진행하였다.
- SQL로 작성한 필드의 칼럼명과 자료형에 맞춰 멤버필드를 코딩
- 작성한 멤버 필드에 따라 getter/setter 생성
- 나중에 오버로드된 생성자가 필요할 수 있으니 기본 생성자 생성
package vo;
public class MemberVo {
int m_idx;
String m_name;
String m_id;
String m_pwd;
String m_zipcode;
String m_addr;
String m_grade;
String m_ip;
String m_regdate;
public MemberVo() {
// TODO Auto-generated constructor stub
}
public int getM_idx() {
return m_idx;
}
public void setM_idx(int m_idx) {
this.m_idx = m_idx;
}
public String getM_name() {
return m_name;
}
public void setM_name(String m_name) {
this.m_name = m_name;
}
public String getM_id() {
return m_id;
}
public void setM_id(String m_id) {
this.m_id = m_id;
}
public String getM_pwd() {
return m_pwd;
}
public void setM_pwd(String m_pwd) {
this.m_pwd = m_pwd;
}
public String getM_zipcode() {
return m_zipcode;
}
public void setM_zipcode(String m_zipcode) {
this.m_zipcode = m_zipcode;
}
public String getM_addr() {
return m_addr;
}
public void setM_addr(String m_addr) {
this.m_addr = m_addr;
}
public String getM_grade() {
return m_grade;
}
public void setM_grade(String m_grade) {
this.m_grade = m_grade;
}
public String getM_ip() {
return m_ip;
}
public void setM_ip(String m_ip) {
this.m_ip = m_ip;
}
public String getM_regdate() {
return m_regdate;
}
public void setM_regdate(String m_redate) {
this.m_regdate = m_redate;
}
}
Book 테이블의 VO 작업도 같은 방식으로 작업한다.
package vo;
public class BookVo {
int b_idx;
int m_idx;
String b_title;
String b_subtitle;
String b_author;
String b_category;
int b_pages;
String b_desc;
String b_filename;
String b_ip;
String b_published;
String b_readdate;
String b_regdate;
public BookVo() {
// TODO Auto-generated constructor stub
}
public int getB_idx() {
return b_idx;
}
public void setB_idx(int b_idx) {
this.b_idx = b_idx;
}
public int getM_idx() {
return m_idx;
}
public void setM_idx(int m_idx) {
this.m_idx = m_idx;
}
public String getB_title() {
return b_title;
}
public void setB_title(String b_title) {
this.b_title = b_title;
}
public String getB_subtitle() {
return b_subtitle;
}
public void setB_subtitle(String b_subtitle) {
this.b_subtitle = b_subtitle;
}
public String getB_author() {
return b_author;
}
public void setB_author(String b_author) {
this.b_author = b_author;
}
public String getB_category() {
return b_category;
}
public void setB_category(String b_category) {
this.b_category = b_category;
}
public int getB_pages() {
return b_pages;
}
public void setB_pages(int b_pages) {
this.b_pages = b_pages;
}
public String getB_desc() {
return b_desc;
}
public void setB_desc(String b_desc) {
this.b_desc = b_desc;
}
public String getB_filename() {
return b_filename;
}
public void setB_filename(String b_filename) {
this.b_filename = b_filename;
}
public String getB_ip() {
return b_ip;
}
public void setB_ip(String b_ip) {
this.b_ip = b_ip;
}
public String getB_published() {
return b_published;
}
public void setB_published(String b_published) {
this.b_published = b_published;
}
public String getB_readdate() {
return b_readdate;
}
public void setB_readdate(String b_readdate) {
this.b_readdate = b_readdate;
}
public String getB_regdate() {
return b_regdate;
}
public void setB_regdate(String b_regdate) {
this.b_regdate = b_regdate;
}
}
[ ⅱ: DAO ]
VO 작업을 마쳤으니 이제 DAO 세팅 작업을 할 차례이다. 지금 단계에서는 각 DAO에 MyBatis ORM을 통한 SQL 작업을 수행할 SqlSession 객체와 이에 대한 getter/setter만 우선 생성한다.
[ ⅲ. Controller + DI injection + MyBatis Mapping ]
Controller와 Bean의 의존성 주입, 그리고 MyBatis의 Mapping 작업은 한꺼번에 이루어질 예정이다. 이에 대한 작업은 다음과 같은 순서로 진행했다.
- 각 Controller.java에 Dao의 객체와 이에 대한 getter/setter도 생성
- Controller에 대한 인젝션을 관할하는 servlet-context.xml에 각 DAO Bean을 인젝션
- 위 DAO Bean이 정상적으로 작동하기 위해 context-3-dao.xml에서, MyBatis로 부터 sqlsession Bean을 인젝션 받는 코드 작성 (2번, 3번 과정은 순서가 바뀌어도 상관없음)
- Bean들이 잘 작동하는 지 확인하기 위해 Controller에 DB의 모든 정보를 조회하는 list.do(selectionList) 리퀘스트를 코딩
- 각 DAO에서 해당 리퀘스트를 수행하는 Method를 코딩
- Method에 대한 값을 sqlsession을 통해 반환하기 위해 MyBatis Mapping 작업이 필요
- 각 DAO에서 필요한 mapper를 새로 만들고 해당 xml 파일에 Mapping 진행
다음 사진들은 학원 수업시간에 진행했던 코딩을 캡쳐하여 내용 정리한 것이지만 이번 프로젝트도 동일한 순서와 코딩으로 진행했기 때문에 첨부한다.
'데이터 분석 > Spring' 카테고리의 다른 글
Martin's Bookshelf_Part 7 : BOOK CRUD(Update) (0) | 2021.01.10 |
---|---|
Martin's Bookshelf_Part 6 : BOOK CRUD(Delete) (0) | 2021.01.10 |
Martin's Bookshelf_Part 5 : BOOK CRUD(Create) (0) | 2021.01.10 |
Martin's Bookshelf_Part 4 : list.jsp / Login&out (0) | 2021.01.09 |
Martin's Bookshelf_Part 2 : ERD & Database (0) | 2021.01.09 |
Martin's Bookshelf_Part 1 : Project Preset (0) | 2021.01.09 |