JPA는 자바 표준 ORM입니다.
ORM ( Object Relational Mapping)
: 객체-관계 매핑의 줄임말입니다.
객체라는 개념을 구현한 클래스와
테이블을 자동으로 매핑(연결)하는 것을 의미합니다.
1. 단순 반복 작업
: 수십, 수백개의 테이블의 SQL을 만들고 유지보수 해야하는
단순 반복 작업을 하게 되는 걸
ORM이 해결해줍니다.
2. 패러다임 불일치 문제
그러나 클래스와 테이블이 애초에
호환가능성을 염두해두고 만들어진 것이 아니기 때문에
불일치가 발생하게 됩니다.
이를 ORM을 통해 해결할 수 있습니다.
객체 간의 관계를 바탕으로 SQL 문을 자동으로 생성하기 때문입니다.
ORM을 사용하면
직접 따로 SQL문을 짤 필요 없이
클래스의 메서드를 통해,
객체를 통해서 간접적으로 DB를 조작하게 됩니다.
ORM 프레임워크의 종류는
JPA/Hibernate, Sequelize, Django ORM 등이 있습니다.
JPA란?
JPA는 인터페이스로서 자바 표준 명세서입니다.
인터페이스인 JPA를 사용하기 위해서는 구현체가 필요한데,
대표적으로 Hibernate, Eclipse, Link 등이 있습니다.
Spring에서는 Spring Data JPA라는 모습들을 이용하여 JPA 기술을 다룹니다.
이들의 관계는
JPA <- Hibernate <- Spring Data JPA
Hibernate를 직접 쓰는 것보단
Spring Data JPA를 쓰는 것을 권장하고 있다고 합니다.
구현체들을 좀 더 쉽게 사용하기 위해 추상화시킨
Spring Data JPA라는 모듈이 등장한 이유는
1. 구현체 교체의 용이성
Hibernate외에 다른 구현체로 쉽게 교체하기 위함입니다.
2. 저장소 교체의 용이성
관계형 데이터베이스 외에 다른 저장소로 쉽게 교체하기 위함입니다.
JPA 적용하는 방법
1. 의존성 등록
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'com.h2database:h2'
(1) spring-boot-starter-data-jpa
: 스프링 부트용 spring data jpa 추상화 라이브러리입니다.
스프링 부트 버전에 맞춰 자동으로 jpa 관련 라이브러리들의 버전을 관리해줍니다.
(2) h2
: 인메모리 관계형 데이터베이스입니다.
별도의 설치없이 프로젝트 의존성만으로 관리가 가능합니다.
애플리케이션 재시작 할 때마다 초기화되는 점을 고려하여
주로 테스트 용도로 사용됩니다.
@SpringBootTest를 사용하면, H2 데이터베이스를 자동으로 실행해줍니다.
참고서적 및 링크
: 스프링 부트와 AWS로 혼자 구현하는 웹 서비스
https://eun-jeong.tistory.com/31
https://geonlee.tistory.com/207
'여니의 프로그래밍 study > Spring & Spring Boot' 카테고리의 다른 글
[스프링부트] Spring boot JPA 테스트 코드 작성하기 (0) | 2022.03.21 |
---|---|
[스프링부트] Spring 웹 계층 (0) | 2022.03.21 |
[스프링부트] MockMvc 관련 메소드 (0) | 2022.03.21 |
[스프링부트] 값 넘겨주는 유닛 테스트코드 작성하기(RequestParam) (0) | 2022.03.21 |
[스프링부트] error: variable name not initialized in the default (0) | 2022.03.21 |