본문 바로가기
🛠️ IT 실전 가이드 (SW 도구)

2026 스프링 부트 게시판 만들기 ①: 가장 쉬운 DB 연결과 JPA 세팅 (H2 404 에러 완벽 해결)

by 데브프리 2026. 6. 8.

안녕하세요, 여러분의 든든한 백엔드 길잡이 데브프리입니다.

 

지난 시간, 우리는 스프링 부트 프로젝트를 처음 생성하고 웹 브라우저에 'Hello World'를 띄우는 감격스러운 순간을 맞이했습니다. 하지만 진짜 웹 서비스라면 사용자가 글을 쓰고, 그 글이 지워지지 않고 안전하게 저장되어야 하겠죠? 그러기 위해 필수적으로 거쳐야 하는 관문이 바로 데이터베이스(DB) 연결입니다.

 

💡 앗, 아직 첫 스프링 부트 프로젝트를 생성하지 않으셨나요? 빈 프로젝트가 준비되어 있어야 오늘 과정을 따라오실 수 있습니다. 아래 이전 글을 먼저 확인하시고 프로젝트를 세팅해 오시면 훨씬 이해가 빠릅니다! 
https://devlog-tech.tistory.com/entry/spring-boot-project-setup-hello-world

 

2026 스프링 부트(Spring Boot) 시작하기: 프로젝트 생성부터 Hello World 출력까지

안녕하세요, 여러분의 든든한 백엔드 길잡이 데브프리입니다. 자바(Java) 환경 세팅을 무사히 마치셨나요? 그렇다면 이제 자바 진영의 꽃이자, 대한민국 백엔드 개발의 표준인 스프링 부트(Spring B

devlog-tech.tistory.com

 

오늘은 복잡한 DB 설치 과정을 모두 건너뛰고, 메모리에서 가볍게 돌아가는 'H2 데이터베이스'와 자바 개발자의 필수 무기인 'JPA'를 이용해 게시판의 뼈대를 세워보겠습니다.

 

특히, 스프링 부트 버전이 4.x(혹은 3.x 후반)로 올라오면서 localhost:8080/h2-console 접속 시 발생하는 지긋지긋한 404 에러의 진짜 원인과 완벽한 해결법까지 꾹꾹 눌러 담았으니, 에러로 고생 중이신 분들은 끝까지 따라와 주세요!

 

1. 시작하기 전에: H2 데이터베이스와 JPA란?

본격적인 세팅에 앞서 오늘 사용할 두 가지 핵심 도구를 짧게 짚고 넘어가겠습니다.

  • H2 데이터베이스: 무겁고 복잡한 설치 과정 없이, 스프링 부트 서버를 켤 때 메모리에 잠깐 띄웠다가 끄면 사라지는 아주 가벼운 '테스트/연습용 DB'입니다. 초기 세팅을 배울 때 이보다 좋은 도구는 없습니다.
  • JPA (Spring Data JPA): 과거처럼 복잡한 SQL 쿼리문을 자바 코드 안에 일일이 작성할 필요 없이, 자바 코드로만 명령을 내리면 알아서 SQL로 번역해 DB와 소통해 주는 '똑똑한 자동 통역기'입니다.

 

2. 필수 의존성 추가하기 (🚨 404 에러 주의 구간)

가장 먼저 build.gradle 파일에 우리가 사용할 도구들을 추가해야 합니다. 여기서 많은 분들이 404 에러의 늪에 빠집니다.

 

최신 스프링 부트 프로젝트를 생성하면 기본적으로 spring-boot-starter-webmvc가 붙어있는 경우가 많습니다. 하지만 H2 콘솔의 자동 설정 마법을 온전히 누리려면 표준 web 라이브러리로 변경해야 하며, 4.0 버전부터는 H2 콘솔 전용 라이브러리를 명시적으로 추가해야만 화면이 열립니다.

스프링 부트 build.gradle H2 JPA 의존성 추가
dependencies 블록 안에 JPA, H2, 그리고 404 에러 방지용 라이브러리들을 세팅합니다.

프로젝트 좌측 탐색기에서 build.gradle 파일을 열고, dependencies 괄호 안을 아래와 같이 수정 및 추가해 주세요.

Groovy
 
dependencies {
    // 1. 표준 웹 스타터 (webmvc가 적혀있다면 꼭 web으로 수정하세요!)
    implementation 'org.springframework.boot:spring-boot-starter-web'
    
    // 2. JPA 통역기 및 H2 데이터베이스 엔진
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    runtimeOnly 'com.h2database:h2'

    // 3. [핵심] H2 콘솔 404 에러를 막아주는 명시적 라이브러리 추가
    developmentOnly 'org.springframework.boot:spring-boot-h2console'

    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

코드를 수정했다면 에디터 우측 상단에 뜨는 코끼리 모양 새로고침 아이콘(Load Gradle Changes)을 잊지 말고 꼭 눌러서 다운로드해 줍니다.

 

3. application.properties 환경 설정

이제 스프링 부트에게 "우리는 H2 DB를 쓸 거고, 이런 옵션으로 켜줘!"라고 지시서를 써줄 차례입니다.

스프링 부트 application.properties H2 설정
DB 접속 정보와 H2 콘솔 활성화, JPA의 편리한 옵션들을 설정합니다.

  • 사진 내용: src > main > resources > application.properties 파일에 설정 코드를 입력한 캡처 화면.
  • 이미지 캡션: DB 접속 정보와 H2 콘솔 활성화, JPA의 편리한 옵션들을 설정합니다.

src > main > resources > application.properties 파일을 열고 아래 코드를 그대로 붙여넣습니다.

Properties
 
# H2 웹 콘솔 활성화 (브라우저에서 DB 확인용)
spring.h2.console.enabled=true
spring.h2.console.path=/h2-console

# H2 DB 접속 주소 설정
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=

# JPA 설정 (자바 코드를 보고 DB 테이블을 자동 생성)
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true

이렇게 세팅하면 서버를 켤 때마다 JPA가 우리 코드를 분석해서 알아서 DB 테이블을 만들어 줍니다!

 

4. 게시판의 뼈대, 엔티티(Entity) 만들기

설정이 끝났으니 진짜 게시판 코드를 짜봅시다. 게시판에는 글 번호, 제목, 내용이 필요하겠죠? DB의 '테이블' 역할을 하는 자바 클래스를 우리는 엔티티(Entity)라고 부릅니다.

  1. com.데브프리.demo 폴더 우클릭 > [New] > [Package]를 눌러 entity라는 폴더를 만듭니다.
  2. entity 폴더 안에 Board.java 클래스를 만들고 아래와 같이 작성합니다.
Java
 
package com.데브프리.demo.entity;

import jakarta.persistence.*;

@Entity // 이 클래스가 DB 테이블이 될 거라는 선언
public class Board {

    @Id // 이 항목이 고유한 기본키(PK)임을 나타냄
    @GeneratedValue(strategy = GenerationType.IDENTITY) // 글 번호를 자동 증가시킴
    private Long id;

    @Column(length = 200, nullable = false) // 제목은 최대 200자, 빈칸 불가
    private String title;

    @Column(columnDefinition = "TEXT", nullable = false) // 내용은 길게 들어갈 수 있도록 TEXT 타입
    private String content;
}

 

5. DB 접속 확인 (H2 콘솔 접속 및 404 에러 체크)

자, 모든 뼈대 작업이 끝났습니다! 코드가 제대로 작동하여 지긋지긋한 404 에러 없이 데이터베이스가 잘 열리는지 확인해 볼까요?

  1. 프로젝트의 메인 클래스를 실행하여 서버를 켭니다.
  2. 하단 로그에 H2 console available at '/h2-console' 문구가 뜨는지 확인합니다.
  3. 웹 브라우저 주소창에 http://localhost:8080/h2-console 을 입력합니다.

스프링 부트 H2 콘솔 접속 및 테이블 확인
JDBC URL이 설정 파일(testdb)과 같은지 확인하고 [Connect]를 누르면 테이블을 볼 수 있습니다.

화면에 뜨는 JDBC URL 칸에 jdbc:h2:mem:testdb가 적혀 있는지 확인하고 [Connect]를 누릅니다. 화면 왼쪽에 깡통 모양의 아이콘과 함께 BOARD라는 테이블이 생겨 있다면 완벽하게 성공입니다! 여러분의 자바 코드가 완벽하게 DB 테이블로 변환되어 연결된 것입니다.

 

마무리

오늘은 H2 데이터베이스와 JPA를 활용해 스프링 부트와 DB를 연결하고, 게시판을 위한 'Board 엔티티'까지 무사히 생성해 보았습니다.

 

특히 build.gradle에서 web 라이브러리로의 수정과 h2console 의존성을 명확히 추가하여 404 에러를 단번에 뚫어낸 이 과정은, 스프링 부트 최신 버전을 다루는 개발자라면 반드시 알아두어야 할 핵심 실전 꿀팁입니다.

 

DB라는 튼튼한 뼈대를 세웠으니, 다음 포스팅에서는 사용자가 웹 화면에서 직접 글을 작성하고 저장하는 '글쓰기 기능(Controller & HTML)'을 완성해 보겠습니다. 코드를 따라 하시다가 막히는 부분이 있다면 언제든 편하게 댓글 남겨주세요!

 

지금까지 데브프리였습니다. 감사합니다.