DTO(Data Transfer Object): 데이터 전송을 위해 사용하는 객체. 데이터 전송 및 검증 횟수를 줄이기 위해 자료들을 하나하나 호출하는 것이 아닌 클래스를 만들어 한 번에 전송할 수 있게 해 준다. 각 데이터 변수들과 그 변수들을 꺼내거나 설정할 수 있는 getter와 setter로 구성되어 있다. Spring에서는 사실상 DTO를 빈(Bean), 포조(POJO)와 같다고 볼 수 있으며 혼용이 가능하다.(이 용어들의 차이는 나중에 다뤄보겠다.)
package newProject.dto;
public class BoardDTO {
private int brdno;
private String brdtitle;
private String brdwriter;
private String brdmemo;
private String brddate;
public BoardDTO() {
super();
}
public BoardDTO(int brdno, String brdtitle, String brdwriter, String brdmemo, String brddate) {
super();
this.brdno = brdno;
this.brdtitle = brdtitle;
this.brdwriter = brdwriter;
this.brdmemo = brdmemo;
this.brddate = brddate;
}
public int getBrdno() {
return brdno;
}
public void setBrdno(int brdno) {
this.brdno = brdno;
}
public String getBrdtitle() {
return brdtitle;
}
public void setBrdtitle(String brdtitle) {
this.brdtitle = brdtitle;
}
public String getBrdwriter() {
return brdwriter;
}
public void setBrdwriter(String brdwriter) {
this.brdwriter = brdwriter;
}
public String getBrdmemo() {
return brdmemo;
}
public void setBrdmemo(String brdmemo) {
this.brdmemo = brdmemo;
}
public String getBrddate() {
return brddate;
}
public void setBrddate(String brddate) {
this.brddate = brddate;
}
}
DAO(Data Access Object): 데이터베이스에 접근하기 위해 사용하는 객체. 데이터베이스에 대한 CRUD(Create, Read, Update, Delete) 작업과 관련된 메서드들을 담고 있다.
package newProject.dao;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import newProject.dto.BoardDTO;
public class BoardDao implements DAO{
SqlSession ss;
public void setSs(SqlSession ss) {
this.ss = ss;
}
@Override
public List<BoardDTO> selectAll() {
return ss.selectList("selectAll");
}
@Override
public BoardDTO selectOne(int no) {
return ss.selectOne("selectOne", no);
}
@Override
public void insertOne(BoardDTO dto) {
ss.insert("insertOne", dto);
}
@Override
public void updateOne(BoardDTO dto) {
ss.update("updateOne", dto);
}
@Override
public void deleteOne(int no) {
ss.delete("deleteOne", no);
}
}
컨트롤러: MVC 모델의 C(Controller)에 해당한다. 사용자의 요청을 수행하기 위해 모델을 조작하고 그 결과를 뷰로 전달하는 역할을 한다.
package newProject.control;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import newProject.dao.DAO;
import newProject.dto.BoardDTO;
@Controller
public class BoardController {
@Autowired
DAO dao;
public void setDao(DAO dao) {
this.dao = dao;
}
@RequestMapping("/boardList")
public String boardList(Model model) {
List<BoardDTO> list = dao.selectAll();
model.addAttribute("list", list);
return "boardList";
}
@RequestMapping("/boardView")
public String boardView(Model model, int brdno) {
model.addAttribute("data", dao.selectOne(brdno));
return "boardView";
}
@RequestMapping("/boardInsert")
public String boardInsert() {
return "boardInsert";
}
@RequestMapping("/insertOk")
public String boardInsert2(@ModelAttribute BoardDTO dto) {
dao.insertOne(dto);
return "redirect:/boardList";
}
@RequestMapping("/boardUpdate")
public String boardUpdate(Model model, int brdno) {
model.addAttribute("data", dao.selectOne(brdno));
return "boardUpdate";
}
@RequestMapping("/updateOk")
public String boardUpdate2(@ModelAttribute BoardDTO dto) {
dao.updateOne(dto);
return "redirect:/boardList";
}
@RequestMapping(value="/boardDelete", method=RequestMethod.GET)
public String boardDelete(@RequestParam int brdno) {
dao.deleteOne(brdno);
return "redirect:/boardList";
}
}
'☕Java > Spring' 카테고리의 다른 글
[20210714] Spring + MyBatis를 이용한 게시판 4 - spring-app.xml, spring-controller.xml (0) | 2021.07.15 |
---|---|
[20210713] Spring + MyBatis을 이용한 게시판 3 - mapper.xml, db.properties, SqlMapConfig.xml (0) | 2021.07.13 |
[20210709] Spring + MyBatis를 이용한 게시판 1 - 프로젝트 구조 (0) | 2021.07.09 |
[20210708] 스프링을 이용한 로그인, 회원가입 (0) | 2021.07.08 |
[20210707] Spring Web MVC (0) | 2021.07.07 |