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

발행: (2026년 1월 4일 오후 02:06 GMT+9)
6 분 소요
원문: 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...

마감이 어제 밤 11시 59분이었음에도 데이터베이스 과제를 방금 끝냈어요 😅 이런 순간은 내가 한때 이야기했던 꿈, 즉 소프트웨어 엔지니어가 되는 꿈을 실제로 살고 있다는 것을 상기시켜 줍니다. Node.js로 백엔드 엔지니어링을 배우는 중

이런 순간들은 내가 한때 이야기하던 꿈, 즉 소프트웨어 엔지니어가 되는 삶을 실제로 살고 있다는 것을 상기시켜준다. Node.js로 백엔드 엔지니어링을 배우는 것은…

데이터베이스 스키마 변경 관리의 기본

애플리케이션을 구축하려면 data storage가 필요하고, 결과적으로 database schemas가 필요합니다. 릴리스된 애플리케이션을 업데이트할 때는 이러한 schemas를 종종 수정해야 합니다....