JPA란?
인터페이스 → 사용하기 위해서는 구현체가 필요함
Spring Data JPA라는 모듈을 통해 다룸
JPA ← Hibernate ← Spring Data JPA
구현체/저장소 교체의 용이성: Hibernate 외의 다른 구현체로 교체 / RDB 외의 다른 저장소로 교체
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;
}
}
Entity
SalesManager.java → sales_manager table 매칭
Id
해당 테이블의 PK(Primary Key) 필드
GeneratedValue
PK 생성규칙 - GenarationType.IDENTITY
옵션 추가 필수 (auto_increament 됨)
— auto_increament: 데이터가 입력될때 자동으로 값이 1개씩 증가되는 컬럼 속성