[ Springboot ] JPA개념잡기 : ORM이란 무엇인가요?
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는 쉽지만 어렵다.