공유된 따라하기 · 스프링부트
Spring Boot 3계층 실습 — JdbcTemplate로 Menu API 만들기
대상 오전에 수업에 참여해서 Spring Boot 프로젝트 구조와 3계층(Controller → Service → Repository)을 이해하기 있는 사람, 이전 수업에서 JdbcTemplate으로 데이터를 가져온 경험이 있는 사람
목표
menus와categories테이블의 데이터를 JdbcTemplate으로 가져와서, Service에서 DTO로 조립하고 Controller에서 서빙하는 과정을 직접 코딩하며 3계층의 역할을 체감한다완성물
/api/v1/menus와/api/v1/menus/categories두 API가 Postman이나 브라우저에서 JSON 응답을 반환하는 상태. 내부 구조는 엔티티가 테이블과 1:1로 대응하고, 조립 로직이 Service에 있는 상태📝 학습방법 : 1단계에서 10단계까지는 복습 단계입니다. 눈으로만 확인하면 됩니다.
그리고 11단계부터는 이전 시간에 다루었던 코드의 문제점을 찾고 수정하는 실습 단계입니다.
11단계부터는 본인의 코드를 수정하시기 바랍니다.
준비물
- 미리 배포한 Spring Boot
backend/프로젝트 (Gradle 기반) - 기존 코드:
Menu엔티티,MenuRepository인터페이스,DfMenuRepository(구현 미완),MenuService인터페이스,DfMenuService(구현 미완),MenuController(기본 구조만 존재)
STEP 1 / 18build.gradle — JDBC 의존성 추가
0개 완료 · 18개 남음
Spring Boot가 데이터베이스와 대화하려면 두 가지 도구가 필요합니다. 하나는 SQL을 실행하는 도구(
JdbcTemplate)이고, 다른 하나는 PostgreSQL과 통신하는 드라이버입니다. 이 두 가지를 프로젝트에 추가해 볼게요.1-1. build.gradle 파일 열기
프로젝트 루트 폴더의
build.gradle파일을 엽니다.파일:
build.gradle1-2. dependencies 블록에 의존성 추가
dependencies { ... }블록 안에 아래 두 줄을 추가합니다.dependencies { // ... 기존 의존성들 ... // JdbcTemplate와 DataSource 자동 설정을 위한 스타터 implementation 'org.springframework.boot:spring-boot-starter-jdbc' // PostgreSQL JDBC 드라이버 (런타임에만 필요) runtimeOnly 'org.postgresql:postgresql' }왜
runtimeOnly인가? PostgreSQL 드라이버는 우리가 코드를 작성할 때 직접import해서 사용하지 않습니다. 프로그램이 실행될 때(run할 때) Spring이 자동으로 드라이버를 찾아서 연결하기 때문에, 컴파일 시점에는 필요 없고 실행 시점에만 필요하므로runtimeOnly로 설정합니다.✅ 확인
터미널에서 아래 명령을 실행하여 컴파일이 정상적으로 되는지 확인합니다.
cd backend ./gradlew compileJavaBUILD SUCCESSFUL이 표시됩니다.- 에러가 없다면 성공입니다.
🎓 newlec 쌤의 코멘트
식당 비유로 설명하면,
spring-boot-starter-jdbc는 주방에 있는 '전자레인지' 같은 도구입니다. 우리가 직접 불을 다루지 않고, 버튼만 누르면(코드를 적으면) 내부적으로 복잡한 과정(연결, 쿼리 실행)을 처리해 줍니다.postgresql드라이버는 그 전자레인지가 우리 가게의 특수한 재료(PostgreSQL)를 처리할 수 있도록 해주는 '어댑터'입니다. 이 두 가지가 없으면 Spring은 데이터베이스와 어떻게 대화해야 할지 모릅니다.❌ 자주 하는 실수
증상 원인 해결 Could not resolve org.springframework.boot:spring-boot-starter-jdbcGradle 캐시 문제 또는 네트워크 문제 ./gradlew clean후 다시compileJava실행Unresolved reference: postgresqlruntimeOnly대신implementation으로 잘못 적었거나 오타runtimeOnly 'org.postgresql:postgresql'문법을 정확히 확인📝 이 단계의 핵심
spring-boot-starter-jdbc: JdbcTemplate 사용 가능하게 해주는 스타터org.postgresql:postgresql: PostgreSQL 연결용 드라이버 (runtimeOnly)
이 주소는 글의 저작자가 공개한 링크입니다. 뉴렉처 스터디의 다른 자료는 로그인 후 볼 수 있어요.