본문 바로가기
PROJECT

ORM, JPA, JPQL

by tiit 2022. 11. 11.
반응형

ORM : Object Relational Mapping

객체 지향 언어를 이용하여 서로 호환되지 않는 타입 간의 데이터를 변화하는 기술

- 좁은 의미 : DB(RDBMS) 테이블 데이터를 (자바) 객체와 매핑하는 기술

- 효과 : RDBMS를 객체 지향 DB로 가상화 하는 것

- ORM 으로 업고자 하는 것

1. DB의 추상화 : 특정 디비에 종속된 표현(예:sql)이나 구현이 사라지고, 디비 변경에 좀 더 유연해짐

2. 객체의 이점을 활용: 객체간 참조, type-safety

3. 관심사 분리 : DB 동작에 관한 코드 작성의 반복을 최소화하고 비즈니스 로직에 집중

 

JPA : Jakarta(Java) Persistence API

자바에서 ORM 기술을 사용해 RDBMS를 다루기 위한 인터페이스 표준 명세

- API + JPQL + metadata (+ Criteria API)

- 기본적으로 관계형 데이터베이스의 영속성(persistence)만을 규정

-- JPA 구현체 중에 다른 유형의 데이터베이스 모델을 지원하는 경우가 있지만, 원래 JPA 스펙과는 무관

- 이름의 변화 

-- Java Persistence API > Jakarta Persistence API 

 

JPA: Persistence (영속성)

프로세스가 만든 시스템의 상태가 종료된 후에도 사라지지 않는 특성

- 구현 방법 : 시스템의 상태를 데이터 저장소에 데이터로 저장한다.

- 사라지는 데이터 - 주기억장치(휘발성 스토리지)에 저장된 데이터

-- 프로세스 메모리 안의 데이터(변수, 상수, 객체, 함수 등)

- 사라지지 않는 데이터 - 보조기억장치(비휘발성 스토리지)에 저장된 데이터

-- 하드디스크, SSD에 기록된 데이터(파일, 데이터베이스 등)

- 영속성 프레임워크: 영속성을 관리하는 부분을 persistence layer로 추상화하고, 이를 전담하는 프레임워크에 관리를 위임

- JPA에서 persistence 란 :  프로세스가 디비로 부터 읽거나 디비에 저장한 정보의 특성

 

JPQL : Jakarta(Java) Persistence Query Language

플랫폼으로부터 독립적인 객체 지향 쿼리 언어

- JPA 표준의 일부로 정의됨

- RDBMS의 엔티티를 다루는 쿼리를 만드는데 사용

- SQL의 영향을 받아서 형식이 매우 유사 

 

- SQL 과 JPQL은 다른 언어이다

-- SQL: 표준 ANSI SQL 을 기준으로 만든, 특정 디비에 종속적인 언어

-- JPQL: 특정 디비에 종속적인 언어가 아님

- JPA 프레임워크를 사용한다면

-- 특별한 요구사항이 있지 않은 한 JPQL을 몰라도 된다

-- JPQL을 직접 사용하고 있다면, 반드시 필요했던 일인지 검토하기

 

 

 

 

 

 

반응형

'PROJECT' 카테고리의 다른 글

JPA @Entity  (0) 2022.11.16
Hibernate VS Spring Data JPA  (0) 2022.11.15
iBATIS, MyBatis, JdbcTemplate  (0) 2022.11.15
6월 12일 일요일  (0) 2022.06.12

댓글