🗓️ 2025.03.10. ~ 2025.03.14.
✅ 학습 개요
7주 차는 Spring Boot 기반으로 본격적인 웹 애플리케이션의 전반적인 흐름을 익히는 시기였다.
단순한 입력폼이나 View 렌더링을 넘어서,
Controller, Service, DAO, DTO의 각 계층이 어떤 역할을 하는지 배우며
“웹 어플리케이션의 구조를 설계하는 개발자”의 감각을 키울 수 있었다.
또한 DB 연동을 프로젝트에 실제 적용하며,
CRUD 흐름의 중요성과 로직 구성에 대해 직접 체득하는 경험을 했다
📝 주요 학습 내용
🛠️ 1. 프로젝트 시작 준비
- gCloud 회원가입 및 가비아 도메인 등록 실습
- Spring Boot 프로젝트 생성 및 디렉터리 구조 확인
- application.properties 설정 및 실행 테스트
- 의존성 추가: Spring Web, Thymeleaf, Lombok, MySQL Driver 등
📂 2. 계층 구조 이해 (MVC 구조 학습)
- Controller → Service → DAO → DB 흐름 파악
- DTO(Data Transfer Object)와 VO(Value Object) 개념 구분
- 각 계층의 역할: 요청 처리, 비즈니스 로직, 데이터 전달, SQL 실행 등
🔧 3. DB 연동 환경 구성
- MySQL DB 생성 및 테이블 구축
- Oracle → MySQL 전환 시 주의사항 정리
- JDBC 연결 설정: URL, 사용자명, 비밀번호 등
- SQL Mapper(XML 방식)과 annotation 방식 차이 이해
📨 4. Controller & View 연동 실습
- @GetMapping / @PostMapping을 활용한 라우팅
- 입력폼 생성 → 결과 출력까지의 데이터 전달 실습
- Model 객체를 통한 View 전달 방식 학습
- form 태그 전송 방식(GET/POST) 흐름 복습
💾 5. CRUD 기능 구현 실습
- Create: 사용자 입력 → DB 저장 (insert)
- Read: DB에서 데이터 조회 후 화면 출력 (select)
- Update: 특정 데이터 수정 후 DB 반영 (update)
- Delete: 레코드 삭제 처리 (delete)
- 게시판, 회원관리 등 예제 실습 포함
🧩 6. DAO & DTO 실습
- DAO 클래스 분리 → DB 접근 전담
- DTO를 통한 계층 간 데이터 전달
- Mapper(XML 또는 interface 기반) 활용
- 자동 주입(@Autowired)과 의존성 관리
🧠 인상 깊었던 실습 코드
@Data
public class BoardDTO {
private int id;
private String title;
private String content;
private String writer;
}
📌 DTO 클래스는 계층 간 데이터를 전달하는 역할을 하며,
Lombok의 @Data를 통해 getter/setter, toString 자동 생성할 수 있어 코드가 간결해졌다.
@Controller
public class BoardController {
@GetMapping("/write")
public String writeForm() {
return "write";
}
@PostMapping("/write")
public String write(BoardDTO dto) {
boardService.save(dto);
return "redirect:/list";
}
}
📌 사용자 요청을 받아 비즈니스 로직을 호출하고, 처리 결과를 View로 연결하는
Controller 계층의 흐름을 실습하며 Spring의 전형적인 구조를 익힐 수 있었다.
🐞 실습 중 이슈 & 해결 방법
이슈 | 해결 방법 |
DTO → Controller 값 전달 실패 | DTO의 변수명과 HTML name 속성 일치 여부 확인 |
application.properties 설정 오류 | DB 경로/포트 번호 오탈자 확인 및 로그 확인 필수 |
MySQL 드라이버 인식 안 됨 | 의존성 추가 누락 → pom.xml에서 mysql-connector-java 추가 |
페이지 라우팅 실패 | @GetMapping("/경로")에 해당하는 HTML 템플릿이 존재해야 정상 연결 |
📌 실습 중 오류가 많았지만, 대부분은 구조나 파일명, 경로 지정과 같은
기초 설정에서 발생한 실수들이었고, 하나하나 해결하며 더 깊이 이해할 수 있었다.
💬 느낀 점
이번 주는 단순한 코드 작성이 아닌,
애플리케이션 구조 자체를 설계하고 구성하는 개발자의 역할을 경험할 수 있었던 소중한 시간이었다.
초기에는 Controller 하나로 끝나던 흐름이, Service와 DAO, DTO로 나뉘면서
“왜 계층화를 하는가”에 대한 명확한 이유와 장점을 느낄 수 있었다.
앞으로 나만의 미니 프로젝트나 팀 프로젝트에서도 이 구조를 어떻게 활용할 수 있을지
실제 개발로 이어질 수 있는 기반이 되는 느낌이었다.
💻 실습 코드 전체 보기
👉 자세한 실습 코드는 아래 글에서 확인할 수 있습니다!
🔗 <"👉https://ny1114.tistory.com/entry/7주-차-실습-코드-모음">
✍️ 한 줄 회고
“코드는 흘러가고, 나는 흐름을 만든다.”
'DevLog > 학습일지' 카테고리의 다른 글
📓 [9주 차 학습일지 – 카테고리 기능 구현 & 프로젝트 통합 흐름] (0) | 2025.04.13 |
---|---|
📓 [8주 차 학습일지 – Spring Boot 구조 개선 & 3.0 실습 흐름] (0) | 2025.04.10 |
📓 [6주 차 학습일지 – UI 구현 & Spring Boot 백엔드 기초] (0) | 2025.04.08 |
📓 [5주 차 학습일지 – SQL 심화 & Spring Boot UI 입문] (0) | 2025.04.08 |
📓 [4주 차 학습일지 – OOP 심화 & JDBC 실습] (0) | 2025.04.08 |
댓글