| 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 프로그래밍 - 기본편 ] 을 들은 후 정리한 내용입니다.
'Framework > Orm&Mapper' 카테고리의 다른 글
[JPA] 인텔리J에서 JPA Entity 기반 ERD 그리기 (0) | 2022.10.19 |
---|---|
[JPA] repository.save()의 반환값이 안 들어올 때 (0) | 2022.10.19 |
[JPA] JPA 전반에 대해 간략히 이해하기 (0) | 2022.10.06 |
[JPA] JPA 프로젝트를 생성, 엔터티 단위 CRUD (JPQL이란?) (0) | 2022.09.29 |
ORM 기술이란 무엇인가? (0) | 2022.09.27 |