SpringBoot 개념정리(5) - 2. JPA란?

Jang Seowoo·2022년 8월 12일
1
post-thumbnail

인프런 스프링부트 개념정리(이론)
이 글은 다음 강의의 이론 정리 글 입니다.


ORM이란 무엇인가요?

2) JPA는 ORM(Object Relational Mapping) 기술이다.

ORM은 Object를 데이터베이스에 연결하는 하나의 방법론이다. ORM은 나의 하인이다!

건물을 짓는 설계도는 2D로 만들어져있고, 건물을 만들게 되면 3D가 된다. 우리는 이것을 모델링한다고 말한다. 즉, 추상적인 개념을 현실 세계에 뽑아내는 것이다.

예를 들어, 실제 데이터베이스에 다음과 같은 Team Table이 있다고 가정하자.

IDint
Namevarchar
Yearvarchar

이 Table을 자바에서는 클래스로 다음과 같이 표현할 수 있다.

Class Team {
	int id;
    String name;
    String year;
}

자바 클래스에서 데이터베이스로 데이터를 밀어넣기도 하고(input: DELETE, UPDATE, INSERT) 가져오기도 한다.(output: SELECT) 하지만 보다시피, 자바가 가지고 있는 데이터 타입과 테이블이 가지고 있는 데이터 타입이 다르다. (String != varchar)

일반적으로 우리는 데이터베이스 세상에 있는 데이터를 자바 세상에 모델링한다. 즉, 테이블을 먼저 만들고 클래스를 만든다. 이것을 우리는 TRM(Table Relational Mapping)이라고 한다.

💡 반면, ORM은 이 순서를 거꾸로 해준다.
자바에 class를 먼저 만들면 JPA(인터페이스)의 규칙에 따라 데이터베이스에 자동으로 만들어준다.

3) JPA는 반복적인 CRUD(Create, Read, Update, Delete) 작업을 생략하게 해준다.

Insert 1건 - C
Selcet 1건 - R
(Select All 전체 - R)
Update 1건 - U
Delete 1건 - D

위는 데이터를 다룰때 자주 일어나는 DML(Data Manipulation Language; 데이터 조작어)이다.

자바와 데이터베이스가 소통하는 방법은 다음과 같다.

  1. 자바가 데이터베이스에 연결을 요청한다.
  2. 데이터베이스가 자바의 신분을 확인하고 세션을 열어준다.(연결)
  3. 자바는 커넥션을 가지게 된다.
  4. 두번째 요청부터는 자바에서 데이터베이스로 쿼리를 바로 전송할 수 있다.
  5. 데이터베이스는 쿼리에 의해서 데이터를 만들고 자바로 결과 값을 돌려준다.
  6. 데이터베이스는 자바와 data type이 다르기 때문에 자바 object로 변경해야한다.

이 로직을 계속해서 반복해야한다. (전송된 쿼리에 대한 응답이 있을 때, data를 받아서 ,자바 object로 바꾸고, 연결 세션 끊고, 연결 커넥션 끊고, 다시 연결 요청, ~...)

이러한 단순한 반복로직을 줄이게 해주는 것이 바로 JPA다. JPA는 이 일을 함수 하나로 제공해준다.

(아마 JpaRepository 인터페이스를 말하는 것 같다)

profile
https://devseowoo.notion.site/Seowoo-Portfolio-b21365c3477345818913e8d8fe2e3b90

0개의 댓글

관련 채용 정보