나는 영속성 레이어를 구축하기 전까지 JPA를 이해하지 못했다

발행: (2026년 1월 4일 오후 02:06 GMT+9)
5 min read
원문: Dev.to

Source: Dev.to

👉“I Didn’t Understand JPA Until I Built the Persistence Layer” 표지 이미지

Persistence Layer란? 🧠

Persistence Layer는 데이터베이스에서 데이터를 저장하고 조회하는 역할을 합니다. 이는 다음 사이의 다리 역할을 합니다:

  • 여러분의 비즈니스 로직
  • 실제 데이터베이스

클린한 Spring Boot 애플리케이션에서는:

  • Controllers ❌ 데이터베이스와 직접 통신하지 않음
  • Services ❌ SQL을 작성하지 않음
  • Repositories ✅ 데이터 접근을 담당

이러한 분리로 애플리케이션이 깨끗하고 확장 가능하게 유지됩니다.

더 큰 그림: Spring Boot 아키텍처 🏗️

전형적인 Spring Boot 웹 프로젝트는 다음과 같습니다:

Spring Boot web project

규칙: 영속성 계층만 데이터베이스와 통신합니다. 이를 엄격히 지키면 버그가 즉시 감소합니다.

Enter JPA (Java Persistence API) 📚

Java Persistence API

JPA는 Java 객체가 데이터베이스 테이블에 매핑되는 방식을 정의하는 사양입니다. SQL을 곳곳에 작성하는 대신, JPA를 사용하면:

  • Java 객체로 작업할 수 있습니다
  • 프레임워크가 테이블 매핑을 처리합니다
  • 쿼리보다 비즈니스 로직에 집중할 수 있습니다

이 개념을 **ORM (Object‑Relational Mapping)**이라고 합니다.

Spring Boot이 학습을 위해 H2 데이터베이스를 사용하는 이유 🧪

Spring Boot은 메모리 내 데이터베이스인 H2를 매우 쉽게 사용할 수 있게 해줍니다.
H2가 초보자에게 완벽한 이유:

  • 가볍다
  • 빠르다
  • 설치가 필요하지 않다
  • 재시작 시 자동으로 초기화됩니다 (인‑메모리 모드)

개발, 테스트, 그리고 데이터베이스 개념을 안전하게 배우기에 이상적입니다.

@Entity: Java와 데이터베이스가 만나는 곳

@Entity 어노테이션은 클래스를 영속 엔티티로 표시합니다. 쉽게 말해, 각 @Entity 클래스는 데이터베이스의 테이블에 해당합니다.

핵심 포인트:

  • 클래스 수준 어노테이션입니다.
  • 모든 엔티티는 기본 키를 가져야 합니다.
  • Spring이 클래스를 자동으로 테이블에 매핑합니다.

이를 이해하면 데이터베이스 테이블이 덜 신비롭게 느껴집니다.

리포지토리: 데이터 접근의 핵심 🔑

Spring Data JPA는 JpaRepository 인터페이스를 제공합니다. 이를 통해 다음을 얻을 수 있습니다:

  • 즉시 사용할 수 있는 CRUD 작업
  • 제네릭 타입 안전성
  • 내장된 쿼리 메서드
  • 사용자 정의 쿼리 지원

SQL도 없고, 보일러플레이트도 없습니다—그냥 깔끔한 메서드 호출만 있습니다.

왜 이 레이어가 이렇게 중요한가 📌

Persistence Layer를 이해하기 전에는:

  • 데이터베이스 로직을 서비스와 섞어 사용함
  • 지저분한 데이터 접근 코드를 작성함
  • 디버깅이 매우 고통스러웠음

그 후에는:

  • 코드가 모듈화됨
  • 테스트가 쉬워짐
  • 스케일링이 가능해 보임

Persistence Layer는 백엔드가 얼마나 건강해질지를 결정합니다.

최종 생각 🚀

제가 Persistence Layer + JPA를 진정으로 이해한 순간, Spring Boot가 의미 있게 다가오기 시작했습니다.

Spring Boot를 배우고 계시면서 다음과 같은 느낌이 든다면:

  • 데이터베이스가 혼란스러울 때
  • 레포지토리가 압도적으로 느껴질 때
  • 로직이 어디에 들어가야 할지 모를 때

👉 여기서 시작하세요.

이 글은 Spring Boot와 백엔드 개발을 탐구하면서 진행 중인 제 학습‑공개 여정의 일부입니다.

Back to Blog

관련 글

더 보기 »

Spring Data JPA 관계

소개 새해 복 많이 받으세요! 풀스택 여정의 지난 10일 동안, 입사 직후 프로젝트를 진행해 왔습니다. 처음에는 Re...