3.1 JPA 소개

JPA란?

인터페이스 → 사용하기 위해서는 구현체가 필요함

Spring Data JPA라는 모듈을 통해 다룸

JPA ← Hibernate ← Spring Data JPA

구현체/저장소 교체의 용이성: Hibernate 외의 다른 구현체로 교체 / RDB 외의 다른 저장소로 교체

JPA의 단점: 높은 러닝 커브

— 러닝 커브: 특정 기술 또는 지식을 실제 필요한 업무와 같은 환경에서 효율적으로 사용하기 위해 드는 학습 비용. 따라서 러닝 커브가 높다는 의미는 배우기 어려운 기술을 의미함

3.2 프로젝트에 Spring Data JPA 적용하기

// Spring Data JPA 추상화 라이브러리. 관련 라이브러리들의 버전 관리
implementation('org.springframework.boot:spring-boot-starter-data-jpa')
// 인메모리 RDB. 테스트용도로 많이 사용
implementation('com.h2database:h2')
package com.jojoldu.book.springboot.domain.posts;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;

import javax.persistence.*;

@Getter // lombok Annotations
@NoArgsConstructor
@Entity // JPA Annotation. 테이블과 링크될 클래스
public class Posts {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    
    @Column(length = 500, nullable = false)
    private String title;
    
    @Column(columnDefinition = "TEXT", nullable = false)
    private String content;
    
    private String author;
    
    @Builder
    public Posts(String title, String content, String author) {
        this.title = title;
        this.content = content;
        this.author = author;
    }
}