자바와 JPA 매핑 개념 완전 이해

개발자되고싶은데·2025년 11월 21일

1️⃣ 자바 vs 데이터베이스 — 왜 매핑이 필요한가?

자바(Java)데이터베이스(DB)
클래스(Class)테이블(Table)
객체(Object)row(행)
필드(Field)column(컬럼)
참조(Reference)외래키(FK)
컬렉션(List/Set)one-to-many 관계

자바는 객체지향 언어이고,
DB는 관계형 구조라서 구조 자체가 완전히 다르다.

그래서 개발자가 이런 걸 직접 맞춰야 했다:

  • 객체 생성 & 필드 값 넣기
  • SQL INSERT / SELECT 작성
  • JOIN 처리
  • Foreign Key 매핑
  • 객체 그래프 탐색 (연관 객체 조회)

이걸 매번 수작업으로 하니까 복잡하고 버그도 많았음.

그래서 등장한 게 JPA의 “매핑” 기능.


2️⃣ JPA 매핑이란?

👉 자바 객체(엔티티)를 관계형 DB 테이블과 매칭시키는 작업
즉, “이 자바 클래스는 DB의 어떤 테이블과 연결되고, 어떤 필드는 어떤 컬럼이다”
이걸 JPA에게 알려주는 것.

이걸 위해 사용하는 것이 바로 JPA 매핑 어노테이션.


3️⃣ JPA 매핑의 4대 구성요소

JPA 매핑은 크게 4가지로 구성됨:


✔ (1) 엔티티 매핑 (클래스 ↔ 테이블)

@Entity
@Table(name = "member")
public class Member { ... }
  • @Entity → JPA가 관리하는 객체
  • @Table → 어떤 테이블과 매핑할지 지정

✔ (2) 필드 매핑 (필드 ↔ 컬럼)

@Column(name = "username")
private String username;
자바DB
String usernameusername VARCHAR

주요 기능:

  • 컬럼 이름 지정
  • 길이, not null, unique, 타입 매핑
  • 기본값

✔ (3) 기본 키 매핑 (Primary Key)

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

JPA는 다양한 PK 생성 전략 제공:

• IDENTITY (MySQL)

DB에서 PK를 자동 증가(AUTO_INCREMENT)

• SEQUENCE (Oracle)

시퀀스를 사용해 PK 생성

• AUTO

DB dialect에 따라 자동 결정


✔ (4) 연관관계 매핑 (Relationship)

자바는 객체 참조하고,
DB는 외래키(FK)로 참조한다.

이 차이를 해결하는 것이 연관관계 매핑.

예: 회원(Member) – 팀(Team)

자바 방식

class Member {
    Team team;   // 객체 참조
}

DB 방식

member.team_id  (foreign key)

이 불일치를 해결하려면 아래 어노테이션이 필요:

JPA 연관관계 어노테이션

매핑어노테이션
다대일@ManyToOne
일대다@OneToMany
일대일@OneToOne
다대다@ManyToMany

예:

@ManyToOne
@JoinColumn(name = "team_id")
private Team team;

4️⃣ JPA가 매핑을 통해 해결하는 문제들

✔ 문제 1) 객체 그래프 탐색

→ 필요할 때 연관된 객체 자동 조회 (지연 로딩)

✔ 문제 2) 외래키 직접 관리

→ 연관 객체만 넣으면 JPA가 FK를 알아서 저장

✔ 문제 3) SQL 작성

→ INSERT/UPDATE/SELECT 자동 생성

✔ 문제 4) 서로 다른 데이터 모델 (객체 vs 테이블)

→ 매핑으로 통합


5️⃣ 왜 JPA 매핑이 중요할까?

🔹 1) 객체지향적으로 개발 가능

DB 생각 안 하고 객체만 생각해도 됨.

🔹 2) SQL 자동 생성

개발자는 비즈니스 로직에 집중.

🔹 3) 유지보수 편함

컬럼 이름 바꿔도 매핑만 수정하면 끝.

🔹 4) 연관관계 편하게 처리

JOIN, FK 관리, N+1 문제 등 자동 최적화 가능.

🔹 5) 애플리케이션 확장성 증가

DB를 MySQL → Oracle로 바꿔도 코드 거의 그대로 사용 가능.


🔥 한 문장으로 요약

JPA 매핑이란, 자바 객체와 DB 테이블의 구조(필드·컬럼·PK·연관관계)를 일대일로 연결하여, JPA가 SQL 생성·조회·관리까지 자동으로 처리하도록 하는 기술이다.


0개의 댓글