7주 차는 Spring Boot를 활용한 웹 애플리케이션의 기본 구조를 학습하며
Controller, Service, DAO, DTO 계층을 직접 설계하고 구현해보는 실습 중심의 한 주였다.
단순 데이터 처리에서 벗어나 전체 애플리케이션의 흐름을 이해하는 데 초점을 맞췄다.
📂 DTO 클래스 (데이터 전달 객체)
@Data
public class BoardDTO {
private int id;
private String title;
private String content;
private String writer;
}
📌 계층 간 데이터를 효율적으로 전달하기 위한 클래스
📌 @Data 애너테이션으로 getter, setter, toString, 생성자 자동 생성
🧱 Controller – 요청 처리
@Controller
public class BoardController {
@Autowired
private BoardService boardService;
@GetMapping("/list")
public String list(Model model) {
model.addAttribute("boards", boardService.getAllBoards());
return "list";
}
@GetMapping("/write")
public String writeForm() {
return "write";
}
@PostMapping("/write")
public String write(BoardDTO dto) {
boardService.save(dto);
return "redirect:/list";
}
}
📌 사용자의 요청을 받아 처리하고 View로 응답을 전달
📌 POST 방식으로 사용자 입력을 수신하고 저장 후 목록 페이지로 리다이렉트
🔧 Service – 비즈니스 로직 처리
@Service
public class BoardService {
@Autowired
private BoardDAO boardDAO;
public List<BoardDTO> getAllBoards() {
return boardDAO.findAll();
}
public void save(BoardDTO dto) {
boardDAO.insert(dto);
}
}
📌 Controller와 DAO 사이에서 로직을 중개
📌 데이터 가공, 조건 분기 등의 핵심 로직이 들어갈 수 있는 계층
🗃️ DAO – DB 접근 계층
@Repository
public class BoardDAO {
@Autowired
private JdbcTemplate jdbc;
public List<BoardDTO> findAll() {
String sql = "SELECT * FROM board";
return jdbc.query(sql, new BeanPropertyRowMapper<>(BoardDTO.class));
}
public void insert(BoardDTO dto) {
String sql = "INSERT INTO board (title, content, writer) VALUES (?, ?, ?)";
jdbc.update(sql, dto.getTitle(), dto.getContent(), dto.getWriter());
}
}
📌 DB 쿼리 실행을 전담하는 클래스
📌 SQL 구문과 DTO 간의 매핑을 통해 데이터 입출력을 구현
📝 마무리
7주 차 실습은 단순한 웹 개발을 넘어
“웹 서비스 구조를 이해하고 직접 설계하는 경험”으로 이어졌다.
MVC 패턴이 실제로 어떻게 동작하는지,
각 계층의 책임과 역할을 실습으로 확인할 수 있었고,
내가 만든 로직이 DB에 저장되고 화면으로 출력되는 전 과정을 경험하며
백엔드 개발자다운 감각이 점점 자라고 있음을 느꼈다.
'DevLog > 실습코드' 카테고리의 다른 글
💻 [9주 차 실습 코드 모음 – 카테고리 기능 중심 CRUD 실습] (0) | 2025.04.13 |
---|---|
💻 [8주 차 실습 코드 모음 – Spring Boot 3.0 구조 & 계층 설계] (0) | 2025.04.10 |
💻 [6주 차 실습 코드 모음 – HTML, Controller 흐름] (0) | 2025.04.08 |
💻 [5주 차 실습 코드 모음 – Oracle SQL & UI] (0) | 2025.04.08 |
💻 [4주 차 실습 코드 모음 – 클래스 설계 & JDBC] (0) | 2025.04.08 |
댓글