본문 바로가기
정리/DB

JPA (1) - JPA? ORM?

by Hudini30 2022. 3. 16.

개요

JPA를 공부하면서 보게되는 이론적 영역 정리.


ORM(Object-Relational Mapping)?

객체는 객체로 설계를 하고, 관계형 데이터베이스는 관계형 데이터베이스대로 설계하고 두가지를 매핑 한다는 의미

ORM 프레임워크로 JPA hibernate, iBatis/MyBatis

JPA(Java Persistence API)?

자바 진영의 ORM 기술 표준 (사양)

JPA는 객체 지향 도메인 모델과 관계형 데이터베이스 시스템 간의 다리 역할

JPA는 자체적으로 어떤 작업도 수행하지 않음(사양일 뿐)

Hibernate, TopLink 및 iBatis와 같은 ORM 도구는 데이터 지속성을 위한 JPA 사양을 구현

ORM 도구에서 다른 도구로 애플리케이션을 전환하려는 경우 쉽게 수행 가능

javax.persistence 패키지에 정의자바 지속성 쿼리 언어 데이터베이스 작업을 수행하는 객체 지향 쿼리 언어 (JPQL) 사용

 

영속성 컨텍스트

영속성? 한 객체가 자신을 생성한 작업이 종료되었음에도 불구하고 지속적으로 존재하는 상태, 하드웨어 측면에서 보면 데이터 저장소에 저장되어 있는 상태.

그러므로 영속성 컨텍스트는 엔티티(객체)를 영구 저장하는 환경

비용속(new/transient)

- 객체를 생성한 상태

영속(managed)

- 객체를 조회하거나 persist 했을때

준영속(detached)

- 영속성 컨텍스트에서 분리한 상태

삭제(removed)

- 객체를 삭제한 상태

장점으로 1차캐시, 동일성(identity) 보장, 트랜잭션을 지원하는 쓰기 지연(commit 할때 DB에 insert sql을 보냄), 변경 감지(객체의 수정을 감지하여 update 요청 없이 commit 시 자동으로 요청), 지연 로딩

 

플러시? 영속성 컨텍스트의 변경내용을 데이터베이스에 반영. 플러시 할 경우는 1.flush, 2.트랜잭션 커밋, 3.JPQL 쿼리 실행

'정리 > DB' 카테고리의 다른 글

MyBatis FETCH SIZE에 대해  (0) 2022.08.17
JPA(3) - 값타입  (0) 2022.04.15
JPA (2) - 기능 정리  (0) 2022.04.11

댓글