springboot 개념정리(youtube강좌)

스프링부트 강좌 with JPA 5강 - ORM이란 무엇인가요?

wannabe 2021. 6. 25. 03:22

1. JPA란?

 ● JPA는 Java Persistence API 이다.

 ● JPA는 ORM기술이다. 

 ● JPA는 반복적인 CRUD작업을 생략하게 해준다.

 ● JPA는 영속성 컨텍스트를 가지고 있다. 

 ● JPA는 DB와 OOP의 불일치성을 해결하기 위한 방법론을 제공한다(DB는 객체저장 불가능)

 ● JPA는 OOP의 관점에서 모델링을 할 수 있게 해준다(상속, 컴포지션, 연관관계)

 ● JPA는 쉽지만 어렵다.  

 

1) ORM이란?

Object Relational Mapping : object를 데이터베이스에 연결하는 방법론

 

ORM은 나의 하인!! 이라 생각

예를 들어, 

Class 하나를 만들었다. 

Class만들 때, 

건물을 짓는 설계도가 있다. 설계도는 2D이다. 이 설계도로 건물을 짓는다. 이 건물이 3D

이 과정을 모델링한다라고 표현. 

모델링은? 추상적인 개념은 현실세계에 뽑아내는 것!

DB에 Team이라는 테이블이 있다면? 

테이블 안에 ID, Name, year이 있다고 하자. 

ID : int

Name : varchar

year : varchar

이 테이블을 자바에서 사용한다고 하자. 

자바에서 DB로 input하기도 하고, DB에서 output해오기도 한다. 

input을 DML이라 한다. 즉, DELETE, UPDATE, INSERT

output해서 가져오는 것을 SELECT라고 한다. 

즉, 데이터를 가져오거나 넣을때, 자바가 가지고 있는 데이터 타입과

DB가 들고 있는 데이터 타입이 다르다. 

 

그래서!

Class를 통해서, DB에 있는 테이블을 모델링해야한다. 

모델리을 하게 되면? 

Class Team {

  int id;

  String name;

  String year;

}

이것을 DB세상에 있는 데이터를 자바 세상에 모델링한다 라고 함.

 

순서는, ①DB테이블을 만들고 ②자바 클래스 만듬

 

이를 역으로 바꿀수 있다. 

왜? ORM은 Object를 통한 relation mapping이므로,, 테이블을 통한!이 아니라,,

즉, ①자바 클래스를 먼저 만들고  ②데이터 베이스를 자동생성할 수 있다. 

이때 필요한 것은? JPA가 가지고 있는 인터페이스이다. 인터페이스의 규칙을 지키면?

자바 클래스 만들어서 실행하면, 데이터베이스를 자동생성되게 하는 기법을 ORM이라고 함

 

그래서 

2) JPA는 반복적인 CRUD작업을 생략하게 해준다.

Select 1건 (Read)

Select All  전체 (Read)

Delete 1건 (Delete)

Update 1건 (Update)

Insert 1건 (Create)

이런 것들은 굉장히 자주 일어나는 반복적인 것!

자바 프로그램에서 DB에 Connection요청을 한다.

그러면 DB는 요청한 사람의 신분을 확인하고, Session을 열어준다. 

그러면, 자바와 DB가 연결된다. 즉 Connection됨

연결되면, 자바에서 쿼리를 전송(데이터 요청)하게된다.

그러면 DB에서 작업을 수행해서 해당 Data를 만듬 그리고 자바에 응답하게 된다.

응답할때, DB데이터 타입과 자바 데이터 타입이 다르므로

Java가 이해할 수 있도록, Java Object로 변경해야한다. 

이는, 단순한 반복 logic이다. 한마디로 노가다... 

이런 일을 줄이게 해주는 게! JPA이다

 

JPA를 사용하면, 전송된 쿼리에 대한 응답이 있을때, 이 데이터를 받고

자바 Object로 바꾸고, 연결된 session과 connection을 끊은 모든 작업을 함수 하나로 작업함

굉장히 쉽고 편안하게 CRUD 작업을 할 수 있다. 

 

그래서 ORM은 나의 하인이다!

반복적인 CRUD작업을 단순화해서 도와주고

내가 만든 클래스를 통해서 자동으로 DB를 만들어주기 때문!

귀찮은 모든 일을 ORM이 다 해결해주니까!