Backend/스프링부트 개념정리(이론)

[ Springboot ] JPA개념잡기 : ORM이란 무엇인가요?

둥둥 2022. 2. 11. 18:17
728x90
JPA란?

1. JPA는 Java Persistence API 이다.

 

2. JPA는 ORM기술 이다.

※ ORM

: Object Relational Mapping (object를 통한 relational mapping) 

  object를 데이터에 연결하는 방법론 같은것

 인터페이스의 규칙을 지키면 자바에서 class를 만들어서 실행하면 DB에 자동으로 테이블이 생성되게 하는 기법 

* 나의 하인 : 반복적인 CRUD작업을 단순하게 도와줌 + 내가 만든 클래스를 자동으로 데이터베이스 테이블을 만들어줌

 

※ 모델링 : 추상적인 개념을 현실세계에 뽑아내는것


java가 들고있는 데이터 타입과 Database가 들고있는 데이터 타입이 서로 다름

Class를통해 데이터베이스에 있는 파일들을 모델링해야함

일반적인 순서는 DB에서 자바로 가는것이 맞지만 ORM.

즉, object에 의한 relational mapping이기 때문에 자바를 먼저 만들고 자바를 통해 데이터베이스를 자동 생성할 수 있음

이때 JPA가 가진 인터페이스가 필요함

 

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

1. 자바 프로그램에서 데이터베이스에 연결을 하기 위해 Connection을 요청
2. 신분을 확인하고 Session 오픈
→ 자바와 DB가 연결되고 자바에서는 connection을 가짐
자바에서 DB로 쿼리를 전송
DB에서는 전달받은 쿼리를 이용해 작업을 수행한 뒤 어떤 테이블에 있는 데이터를 만들어 냄
이 데이터를 다시 자바로 응답하여 데이터 베이스는 자바로 이 데이터를 돌려줌
이때, DB의 데이터 타입과 자바의 데이터 타입이 다르므로 자바는 해당 데이터를 java object로 변경해야 함
+ 연결된 session과 connection 끊기

=> 단순한 반복 로직 (노가다)

 

이러한 노가다를 줄이기 위해 JPA를 사용

JPA는 ③의 모든 과정들을 함수 하나로 제공해 줌

 

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

 

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

 

6. 방언 처리가 용이하여 Migration하기 좋음. 유지보수에도 좋음.

 

7. JPA는 쉽지만 어렵다.

728x90