[커널아카데미] 백엔드 12기 10주차 회고

david1-p·2025년 6월 1일

회고

목록 보기
10/27

지난 7일간의 백엔드 개발 회고 (Spring + MySQL 실습 정리)

개요

이번 주는 본격적으로 Spring 프레임워크를 활용해서 웹 애플리케이션을 만들어보는 데 집중했다. 로그인 기능과 게시판을 구현하고, 이를 MySQL과 연동하여 실제 데이터를 저장하고 출력하는 과정을 경험했다. 실습을 통해 MVC 패턴, DAO, DTO 개념을 실제로 손에 익힐 수 있었다.


1. 로그인 기능 구현

핵심 흐름

  • 사용자의 입력(id, pw)을 컨트롤러에서 받아서 서비스 → DAO를 통해 DB와 비교
  • 로그인 성공 시 세션에 사용자 정보 저장
  • 실패 시 에러 메시지 출력

구현 방식

  • @RequestMapping("/login")을 활용하여 로그인 폼 처리
  • HttpSession을 활용한 사용자 상태 유지
  • 비밀번호는 평문(PK가 아닌 일반 컬럼)으로 저장 후 비교 (향후 BCrypt로 개선 필요)

배운 점

  • 세션 관리 방식의 기본 구조 파악
  • @ModelAttribute, @RequestParam 사용 방식 이해
  • 컨트롤러에서 redirect:를 통해 리다이렉션 처리

2. 게시판 기능 구현

구현한 기능

  • 글 목록 조회 (SELECT)
  • 글 상세 조회 (SELECT WHERE bno=?)
  • 글 등록 (INSERT)
  • 글 수정 (UPDATE)
  • 글 삭제 (DELETE)

기술 포인트

  • BoardControllerBoardServiceBoardDao 구조
  • 게시글 페이징 처리: LIMIT, OFFSET 활용
  • 검색 기능: title, content, writer 컬럼 기준 LIKE 검색

에러 경험

  • java: cannot find symbolSearchCondition 클래스 import 누락
  • JSP 파일 경로 문제로 인한 404 오류 → prefix, suffix 설정 누락 확인 (application-context.xml or WebMvcConfig)

3. MySQL 연동

환경 설정

  • pom.xmlmysql-connector 추가
  • application.properties에서 DB 접속 설정
  • @Repository, @Service, @Autowired를 통한 DI 주입

쿼리 구성 팁

  • PreparedStatement 방식이 아니라 MyBatis를 사용해 XML로 쿼리 작성
  • Mapper 인터페이스와 XML 쿼리 매핑 활용

주의점

  • 한글 깨짐 문제 → DB 및 커넥션에 utf8mb4 설정 확인
  • 시간 타입 처리 시 LocalDateTime과 DB의 DATETIME 매핑 이슈

마무리하며

처음에는 컨트롤러와 DAO 사이에서 어디까지 책임져야 할지 헷갈렸지만, 각 계층이 하는 역할이 명확히 정리되면서 전체 구조가 머리에 그려지기 시작했다. 실습을 통해 단순히 코드를 구현하는 게 아니라 "왜 이렇게 설계해야 하는가?"에 대한 감도 조금씩 잡혀가는 느낌이다.

다음 주에는 파일 업로드, 인터셉터, 예외 처리, AOP까지 확장해서 실습해볼 계획이다.


정리

기능사용 기술/개념
로그인Spring MVC, 세션, 컨트롤러
게시판CRUD, 페이징, 검색, JSP
DB 연동MyBatis, MySQL, DAO/DTO
오류 해결컴파일 에러, 경로 설정, import
profile
DONE IS BETTER THAN PERFECT.

0개의 댓글