스프링 부트와 AWS로 혼자 구현하는 웹 서비스 05
03. 스프링 부트에서 JPA java persistence API로 DB 다루기
03_1 JPA java persistence API 란?
우선 API란?!
- 개념
API는 애플리케이션 소프트웨어를 빌드하고 통합하기 위한 정의 및 프로토콜 세트인 애플리케이션 프로그래밍 인터페이스(Application Programming Interface)를 뜻합니다.
- 작동방식
API를 사용하면 구현 방식을 알지 못하는 제품 또는 서비스와도 통신할 수 있으며 애플리케이션 개발을 간소화하여 시간과 비용을 절약할 수 있습니다. 새로운 툴과 제품을 설계하거나 기존 툴과 제품을 관리할 때 API를 사용하면 유연성을 높이고 설계, 관리, 사용 방법을 간소화하며 혁신의 기회를 얻을 수 있습니다.
출처:https://www.redhat.com/ko/topics/api/what-are-application-programming-interfaces
현대 웹 앱에서 관계형 데이터 베이스 RDS relational database의 중요도가 높아짐에따라 프로젝트에 SQL의 비중이 급격하게 높아졌다 - RDS가 SQL만을 인식하기 때문에
이에 JAVA의 특징인 객체 지향적인 프로그래밍이 희석되고, DB 모델링에 집중하게됨
( JAVA - 객체지향 프로그래밍 언어 => 메세지를 기반으로 기능/속성을 한 곳에서 관리하는 기술
RDS - 관계형 데이터 베이스 => 어떻게 데이터를 저장할지에 초점이 맞춰진 기술 )
특히나, 상속 관계에 대한 구현을 RDS로 할수는 없음
JPA는 이렇게 다른 두개를 중간에서 연결하는 역할을 하는 API임
==> 따라서 개발자들은, SQL에 맞춘 코드를 짜지 않아도 된다는 말이 된다
03_2 프로젝트에 Spring Data JPA 적용하기
우선 build.gradle에 의존성부터 넣어줌
// JPA
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
// h2 database
runtimeOnly 'com.h2database:h2'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
=> JPA 추상화 라이브러리
=> 스프링 부트 버전에 맞춰 자동으로 JPA 관련 라이브러리 버전 관리
runtimeOnly 'com.h2database:h2'
=> 인메모리 RDS
=> 별도의 설치 x => 프로젝트 의존성만으로 관리가 가능함
=> 메모리에서 실행 => 앱을 재실행할때 초기화됨 => 테스트 용으로 많이 사용함
도메인을 담을 패키지와 / post 패키지,클래스를 만듬
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import jakarta.persistence.Entity;
import jakarta.persistence.Column;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
@Getter //6
@NoArgsConstructor //5
@Entity //1
public class Posts {
@Id //2
@GeneratedValue(strategy = GenerationType.IDENTITY) //3
private Long id;
@Column(length = 500, nullable = false ) //4
private String title;
@Column(columnDefinition = "TEXT", nullable = false)
private String content;
private String author;
@Builder //7
public Posts(String title, String content, String author) {
this.title = title;
this.content = content;
this.author = author;
}
}
여기서 문제가 됐던 사항은, 책에는 javax.persistence에 있는 것들을 import 해오라고 되어있었다
하지만, 여러번 확인을 해봐도, 빨간줄의 오류에, symbol오류가 계속 떴다
그래서 구글링을 해보니 javax.* -> jakarta.*로 바뀐것을 확인할 수 있었다
이걸 본 후, 코드를 작성해보니 오류 없이 코드가 작성되었다