본문 바로가기

데이터 분석/Spring

Martin's Bookshelf_Part 3 : MVC Framework Setting up


DB의 작업을 마쳤으니 이제는 VO와 DAO를 손 볼 차례이다. Book테이블에 너무 많은 필드를 만들어 놓아서 살짝 한 숨이 나온다...

 

[ ⅰ: VO ]

우선 Member 테이블의 VO 작업부터 수행한다. VO의 작업은 다음의 순서로 진행하였다.

  1. SQL로 작성한 필드의 칼럼명과 자료형에 맞춰 멤버필드를 코딩

  2. 작성한 멤버 필드에 따라 getter/setter 생성

  3. 나중에 오버로드된 생성자가 필요할 수 있으니 기본 생성자 생성
     

 

더보기
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 작업은 한꺼번에 이루어질 예정이다. 이에 대한 작업은 다음과 같은 순서로 진행했다.

  1. 각 Controller.java에 Dao의 객체와 이에 대한 getter/setter도 생성

  2. Controller에 대한 인젝션을 관할하는 servlet-context.xml에 각 DAO Bean을 인젝션

  3. 위 DAO Bean이 정상적으로 작동하기 위해 context-3-dao.xml에서, MyBatis로 부터 sqlsession Bean을 인젝션 받는 코드 작성 (2번, 3번 과정은 순서가 바뀌어도 상관없음)

  4. Bean들이 잘 작동하는 지 확인하기 위해 Controller에 DB의 모든 정보를 조회하는 list.do(selectionList) 리퀘스트를 코딩

  5. 각 DAO에서 해당 리퀘스트를 수행하는 Method를 코딩

  6. Method에 대한 값을 sqlsession을 통해 반환하기 위해 MyBatis Mapping 작업이 필요

  7. 각 DAO에서 필요한 mapper를 새로 만들고 해당 xml 파일에 Mapping 진행

 

다음 사진들은 학원 수업시간에 진행했던 코딩을 캡쳐하여 내용 정리한 것이지만 이번 프로젝트도 동일한 순서와 코딩으로 진행했기 때문에 첨부한다.

 

Step 1: Controller.java에 Dao의 객체/getter/setter 생성 → Step 2: servlet-context.xml에 각 DAO Bean을 인젝션

 

Step 3:  context-3-dao.xml에서 MyBatis로 부터 sqlsession Bean을 인젝션 받는 코드 작성

 

Step 4: Controller에 DB의 모든 정보를 조회하는 list.do(selectionList) 리퀘스트를 코딩

 

Step 5: 각 DAO에서 해당 리퀘스트를 수행하는 Method를 코딩

 

Method에 대한 값을 sqlsession을 통해 반환하기 위해 MyBatis Mapping 작업이 필요