[SECTION 11. 데이터를 영구적으로 저장하자 — 스프링 부트 + JPA 입문]
JPA(Java Persistence API) = Java 객체와 DB 테이블을 자동으로 매핑해주는 기술
ORM(Object-Relational Mapping) = Java 객체(Object)와 DB 테이블(Relational)을 자동으로 연결(Mapping)해주는 기술. JPA는 Java의 ORM 표준.
H2 = 는 Java로 만들어진 가벼운 인메모리 데이터베이스
| 특징 | 내용 |
|---|---|
| 별도 설치 불필요 | 의존성 추가만 하면 끝 |
| 인메모리 방식 | 서버와 함께 시작/종료 |
| 웹 콘솔 제공 | 브라우저에서 DB 직접 확인 가능 |
| 용도 | 개발/테스트 환경에 적합 |
| 어노테이션 | 설명 |
|---|---|
@Entity | DB 테이블과 매핑되는 클래스 선언 |
@Table(name = "post") | 매핑할 테이블 이름 지정 |
@Id | Primary Key 지정 |
@GeneratedValue | ID 자동 생성 전략 (IDENTITY = AUTO_INCREMENT) |
@Column | 컬럼 속성 지정 (nullable, length 등) |
| 기존 (메모리) | JPA | |
|---|---|---|
| 저장 | posts.add(post) | postRepository.save(post) |
| 조회 | posts.stream().filter(...) | postRepository.findById(id) |
| 전체 조회 | return posts | postRepository.findAll() |
| 삭제 | posts.removeIf(...) | postRepository.deleteById(id) |
| 개념 | 핵심 내용 |
|---|---|
| JPA | Java 객체와 DB 테이블을 자동으로 매핑해주는 기술 |
| ORM | 객체와 관계형 DB를 자동으로 연결해주는 기술 |
| Hibernate | JPA의 대표 구현체, 스프링 부트에 기본 내장 |
| H2 | Java 기반 인메모리 DB, 개발/테스트용 |
| @Entity | DB 테이블과 매핑되는 클래스 선언 |
| @Id | Primary Key 지정 |
| @GeneratedValue | ID 자동 생성 (AUTO_INCREMENT) |
| JpaRepository | 기본 CRUD 메서드를 자동으로 제공하는 인터페이스 |
| show-sql | JPA가 실행하는 SQL을 콘솔에 출력 |