| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
- 자바
- html
- Eclipse
- CSS
- javascript
- math
- HashMap
- 배열
- Visual Studio Code
- 테스트자동화
- junit
- 자바스크립트
- Java
- 정규식
- 인텔리제이
- 이클립스
- Array
- list
- 문자열
- junit5
- 자바문법
- string
- vscode
- input
- ArrayList
- IntelliJ
- java테스트
- js
- json
- 단위테스트
- Today
- Total
어제 오늘 내일
[Spring Boot 입문 - 8] 데이터베이스 연동? SQL 몰라도 됩니다 (feat. JPA, H2) 본문
[Spring Boot 입문 - 8] 데이터베이스 연동? SQL 몰라도 됩니다 (feat. JPA, H2)
hi.anna 2026. 2. 13. 11:59지난 시간까지 만든 Hello World는 치명적인 단점이 있습니다.
서버를 껐다 켜면 데이터가 다 사라진다는 거죠. (휘발성)
데이터를 영구적으로 저장하려면 데이터베이스(DB)가 필요합니다.
"아, 오라클이나 MySQL 설치해야 하나요? 너무 무거운데..."
걱정 마세요. 우리는 H2라는 아주 가볍고 똑똑한 DB를 사용할 겁니다.
1. 라이브러리 추가하기 (build.gradle)
우리가 처음 프로젝트를 만들 때 '웹(Web)' 기능만 넣었기 때문에, DB를 쓰려면 재료(라이브러리)를 추가해야 합니다.
- IntelliJ에서
build.gradle파일을 엽니다. dependencies { ... }중괄호 안에 아래 두 줄을 복사해서 붙여넣으세요.
dependencies {
// ... 기존에 있던 implementation '...web' 등등 ...
// [새로 추가할 친구들]
implementation 'org.springframework.boot:spring-boot-starter-data-jpa' // JPA (DB 도우미)
runtimeOnly 'com.h2database:h2' // H2 Database (가벼운 DB)
// ... 기존에 있던 lombok 등등 ...
}
- 코드를 넣으면 오른쪽 위에 코끼리 아이콘(Sync Gradle Changes)이 뜹니다. 그걸 꼭 눌러주세요! (그래야 다운로드가 됩니다.)

2. 환경 설정하기 (application.properties)
이제 DB 연결 설정을 해야 합니다.
src/main/resources/application.properties파일을 엽니다.- 아래 내용을 복사해서 붙여넣으세요.
# 1. H2 DB 접속 정보
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
# 2. H2 콘솔 사용 허용 (웹에서 DB 확인 가능)
spring.h2.console.enabled=true
# 3. JPA 설정 (서버 켤 때 DB 테이블을 자동으로 만들어줌!)
spring.jpa.hibernate.ddl-auto=update
spring.jpa.properties.hibernate.format_sql=true
ddl-auto=update: 자바 클래스(Entity)를 수정하면 DB 테이블도 자동으로 수정해 줍니다.
3. 테이블 만들기 (Entity)
이제 DB 테이블을 만들어야 하는데, 쿼리문(CREATE TABLE...)을 쓸 필요가 없습니다.
그냥 자바 클래스를 하나 만들고 스티커(@Entity)만 붙이면 됩니다.
com.example.demo패키지 안에entity라는 패키지를 만듭니다.- 그 안에
Member라는 클래스를 만들고 아래 코드를 작성하세요.
package com.example.demo.entity;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@Entity // 1. 스프링아, 이거 DB 테이블로 만들어줘!
@Getter // (Lombok) getter 자동 생성
@Setter // (Lombok) setter 자동 생성
@NoArgsConstructor // (Lombok) 기본 생성자 자동 생성
public class Member {
@Id // 2. 이게 PK(주민등록번호 같은 식별자)야!
@GeneratedValue(strategy = GenerationType.IDENTITY) // 3. 번호는 1, 2, 3... 알아서 올려줘.
private Long id;
private String username; // 이름
private String email; // 이메일
}
@Entity: 이 클래스는 이제부터 자바 객체이기도 하지만, DB 테이블이기도 합니다.jakarta.persistence패키지가 바로 JPA 기술입니다.
4. 창고지기 채용하기 (Repository)
테이블(창고)을 만들었으니, 물건을 넣고 빼줄 창고지기(Repository)가 필요합니다.
놀랍게도 인터페이스(Interface)만 만들면 끝입니다.
com.example.demo안에repository패키지를 만듭니다.MemberRepository라는 인터페이스(Interface)를 만듭니다. (Class 아님!)
package com.example.demo.repository;
import com.example.demo.entity.Member;
import org.springframework.data.jpa.repository.JpaRepository;
// JpaRepository<다룰 대상, ID의 타입> 상속받기
public interface MemberRepository extends JpaRepository<Member, Long> {
// 끝입니다. 진짜로요.
}
우리가 JpaRepository를 상속(extends)받는 순간, 스프링 부트가 save (저장), findAll (전체 조회) 같은 기능들을 마법처럼 다 만들어줍니다.
5. 잘 됐는지 확인해 볼까요?
서버를 재실행 해보세요.
이제 웹 브라우저에서 H2 콘솔에 접속해 봅니다.
👉 주소: http://localhost:8080/h2-console
- JDBC URL 칸에
jdbc:h2:mem:testdb라고 적혀 있는지 확인합니다. - [Connect] 버튼을 누릅니다.
- 왼쪽에
MEMBER라는 테이블이 보이면 성공!


마무리
오늘 우리는 SQL을 한 줄도 안 썼는데 DB 테이블을 만들고 연결까지 마쳤습니다.
이게 바로 JPA의 위력입니다.
Entity: 붕어빵 틀 (데이터 설계도)Repository: 붕어빵 기계 (데이터를 찍어내고 저장하는 도구)
준비는 끝났습니다. 이제 데이터를 진짜로 넣어보고(Create), 읽어봐야겠죠(Read)?
다음 시간에는 대망의 게시판(CRUD) 기능 만들기를 시작해보겠습니다.
다음 편에서 만나요! 👋
'IT > SpringBoot' 카테고리의 다른 글
| [Spring Boot 입문 - 9] 게시판(CRUD) 기능 만들기 - 백엔드 API 구현 (0) | 2026.02.14 |
|---|---|
| [Spring Boot 입문 - 3] 5분 컷! IntelliJ로 첫 프로젝트 만들고 실행하기 (0) | 2026.02.13 |
| [Spring Boot 입문 - 7] 어노테이션(@) 지옥 탈출! 자주 쓰는 핵심 5총사 정리 (0) | 2026.02.12 |
| [Spring Boot 입문 - 6] Controller, Service, Repository: 3계층 구조 완벽 이해하기 (0) | 2026.02.12 |
| [Spring Boot 입문 - 4] 스프링 부트 동작 원리: 요청(Request)이 들어오면 벌어지는 일 (0) | 2026.02.11 |
