99. 실력 향상 훈련 (5)
6. 훈련 4 프로젝트 삭제 구현
네 번째 훈련은 프로젝트 삭제를 구현하는 것이다.
1) DAO 인터페이스에 삭제 메서드 추가
ProjectDao 인터페이스에 프로젝트 데이터를 삭제할 때 호출할 메서드를 선언한다.
int delete(int no) throws Exception; //프로젝트 데이터 삭제 메서드
2) DAO 구현체에 메서드 추가
ProjectDao 인터페이스의 변경에 맞추어 MySqlProjectDao 클래스에 메서드를 추가한다. delete() 메서드는 프로젝트 번호를 매개변수로 받는다. 그리고 프로젝트 번호에 해당하는 데이터를 찾아서 삭제한다.
3) 페이지 컨트롤러 생성
spms.controls 패키지에 ProjectDeleteController 클래스를 생성한다. 삭제 요청이 들어오면 해당 번호의 프로젝트를 삭제하고, 프로젝트 목록으로 리다이렉트 한다.
4) JSP 페이지 생성
프로젝트 데이터를 삭제한 후 프로젝트 목록으로 리다이렉트 하기 때문에 JSP를 만들지 않는다.
- 훈련 4 결과 소스
네 번째 훈련의 결과 소스이다.
소스 파일 | 설명 |
spms/dao/ProjectDao.java | ProjectDao 인터페이스에 delete() 메서드 추가 |
spms/dao/MySqlProjectDao.java | delete() 메서드 구현 |
spms/controls/ProjectDeleteController.java | 프로젝트의 삭제를 처리하는 페이지 컨트롤러 |
- DAO 인터페이스 - ProjectDao
package spms.dao;
import java.util.List;
import spms.vo.Project;
//ProjectDao 인터페이스 정의
public interface ProjectDao {
List<Project> selectList() throws Exception; //프로젝트 목록 반환 메서드
int insert(Project project) throws Exception; //프로젝트 데이터 등록 메서드
Project selectOne(int no) throws Exception; //프로젝트 상세정보 조회 메서드
int update(Project project) throws Exception; //프로젝트 데이터 변경 메서드
int delete(int no) throws Exception; //프로젝트 데이터 삭제 메서드
}
- DAO 구현체 - MySqlProjectDao
package spms.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import javax.sql.DataSource;
import spms.annotation.Component;
import spms.vo.Project;
@Component("projectDao")
public class MySqlProjectDao implements ProjectDao {
...
//프로젝트 삭제
@Override
public int delete(int no) throws Exception {
Connection connection = null;
Statement stmt = null;
try {
connection = ds.getConnection(); //커넥션 객체 가져오기
stmt = connection.createStatement();
return stmt.executeUpdate(
"DELETE FROM PROJECTS WHERE PNO=" + no);
} catch (Exception e) {
throw e;
} finally {
try {if(stmt != null) stmt.close();} catch(Exception e) {}
try {if(connection != null) connection.close();} catch(Exception e) {}
}
}
}
- 페이지 컨트롤러 - ProjectDeleteController
package spms.controls;
import java.util.Map;
import spms.annotation.Component;
import spms.bind.DataBinding;
import spms.dao.MySqlProjectDao;
@Component("/project/delete.do")
public class ProjectDeleteController implements Controller, DataBinding {
//인스턴스 변수
MySqlProjectDao projectDao;
//셋터 메서드
public ProjectDeleteController setProjectDao(MySqlProjectDao projectDao) {
this.projectDao = projectDao;
return this;
}
//DataBinding 인터페이스 구현 메서드
@Override
public Object[] getDataBinders() {
return new Object[] {"no", Integer.class};
}
//Controller 인터페이스 구현 메서드
@Override
public String execute(Map<String, Object> model) throws Exception {
Integer no = (Integer)model.get("no");
projectDao.delete(no);
return "redirect:list.do";
}
}
네 단계의 훈련을 통해 프로젝트의 CRUD(Create, Retrieve, Update, Delete) 기능을 모두 구현하였다. 업무용 시스템 개발의 핵심을 구현한 것이다. 물론 실제 업무용 시스템을 개발할 때는 더 복잡한 프로세스를 다루게 되겠지만, 그럼에도 데이터를 다루는 프로그램의 시작은 이렇게 CRUD 기능을 구현하는 것이다. 인사 관리가 되었든, 회계 관리가 되었든, 어떤 시스템을 개발하더라도 관리 기능의 기본은 데이터의 등록과 조회, 변경, 삭제이다.
참고도서 : https://freelec.co.kr/book/1674/
[열혈강의] 자바 웹 개발 워크북
[열혈강의] 자바 웹 개발 워크북
freelec.co.kr