Framework/Orm&Mapper

JPA란 무엇인가?

simDev1234 2022. 9. 27. 17:01

|  JPA

- JPA란, 자바에서 사용하는 ORM 기술 표준을 말한다.

* ORM : 객체와 RDBMS를 매핑해주는 기술

- JPA는 인터페이스의 모음으로, Hinernate / EclipseLink / DataNucleus가 이 명세를 구현했다.

 

|  JPA를 왜 쓸까?

1. SQL 중심 개발 -> Object 중심 개발

2. 생산성 : 데이터의 CRUD가 훨씬 쉬워진다.

저장 : jpa.persist(entity)

조회 : jpa.find(pk)

수정 : entity.setName(" ")

삭제 : jpa.remove(entity)

3. 유지보수 : 필드 변경 시 모든 SQL 수정 --> 필드를 하나만 더 추가

4. 패러다임 불일치 해결

rf. 객체와 관계형 DB의 차이

  객체 SQL
상속 객체 상속 관계 Table 슈퍼 타입 - 서브 타입 (Pk - Fk)
연관관계 참조 사용 (ex. member.getTeam()) 외래 키를 사용 (양방향 조인이 가능)
객체 그래프 탐색 상속 관계에서 부모 타입 사용 가능 서로 pk,fk를 통해 조인된 테이블끼리만 가능
비교하기 같은 참조값을 가진 객체는 서로 == 같다고 표현 동일한 트랜잭션에서 조회한 엔터티여야만 같다고 표현

5. 성능 :

(1) 1차 캐시와 동일성 보장

: JPA를 쓸 경우에 하나의 트랜잭션에서 다음 트랜잭션으로 넘어가기 전에 잠시 동안 캐시를 해주는 기능이 있다.

(2) 트랜잭션을 지원하는 쓰기 지연

insert JDBC BATCH SQL 기능을 통해 commit() 전까지 insert를 모아 한번에 전송한다.
update/delete update, delete로 인한 row 락 시간 최소화 - update, delete 후 바로 commit()

(3) 지연 로딩

* 일반적으로 지연 로딩으로 먼저 코딩 후, 최적화를 위해 자주쓰는 두 객체간 연관관계를 즉시 로딩으로 변경한다.

지연 로딩 객체가 실제 사용될 때에 로딩한다.

-- A 테이블을 조회, B 테이블을 조회 ... 식으로 지연하여 조회
즉시 로딩 Join을 통해 연관 객체를 미리 묶어 조회

-- A join B 를 통해 바로 조회 

6. 데이터 접근 추상화와 벤더 독립성

7. 표준

 

|  역사

- JPA는 Java Persistence API 의 줄임말

- 이클립스 재단에서 가져가면서 Jakarta Persistence API 로 명칭 변경

- 과거에 EJB ORM이 있었다. --> 하이버네이트 (오픈 소스) --> JPA (자바 표준)

 

|  특징

- Annotation을 통해 매핑

- 기본형 타입에 대한 매핑 지원

- 밸류 타입에 대한 매핑 가능

- 클래스 간 연관관계 : 1:1, 1:N, N:1, N:M

- 상속 매핑 지원

 

 

[ 출처 ]

인프런 강의, [ 자바 ORM 표준 JPA 프로그래밍 - 기본편 ] 을 들은 후 정리한 내용입니다.