JPA : Java Persistence API
자바 진영의 ORM 기술 표준
ORM : Object-relational mapping (객체 관계 매핑)
객체를 관계형 데이터베이스에 맞게 매핑해주는 기술
Persist는 엔티티를 영구 저장한다는 뜻이다.
JPA도 결국에는 JDBC API를 사용해서 쿼리를 날린다.
저장 (Entity 객체를 Persist)
1.Entity를 분석
2. insert 쿼리를 생성
3. JDBC API 사용
4. 패러다임 불일치를 해결
조회
1. select sql 생성
2. JDBC API 사용
3. ResultSet 매핑
4. 패러다임 불일치 해결
JPA는 표준 명세로 인터페이스의 모음이다.
JPA2.1 표준 명세를 구현한 3가지 구현체중 하이버네이트를 중점으로 사용한다.
JPA 사용시 장점
- 객체 중심 개발
- 생산성
- 유지보수
- 패러다임의 불일치 해결 (JPA와 상속, 연관관계, 객체 그래프 탐색, 비교)
- 성능
- 1차 캐시와 동일성 보장 (같은 트랜잭션 안에서는 같은 엔티티 반환)
- 트랜잭션을 지원하는 쓰기 지연
- 지연 로딩(Lazy)
- 데이터 접근 추상화와 벤더 독립성
- 표준
쓰기지연
Insert : 트랜잭션을 커밋할 때까지 Insert SQL을 모으고, JDBC BATCH SQL 기능을 사용해서 한 번에 SQL 전송
Update : Update, Delete로 인한 로우(ROW)락 시간 최소화, 트랜잭션 커밋시 update, delete SQL 실행하고 바로 커밋
지연 로딩 : 객체가 실제 사용될 때 로딩
즉시 로딩 : Join sql로 한번에 연관된 객체까지 미리 조회 (안쓰는것까지도 조회되기에 효율은 떨어진다.)
✔️ JPA 구동 방식
1. resource/META-INF/persistence.xml 설정 정보를 조회한다.
2. EntityManagerFactory 를 생성한다.
3. EntityManager를 생성한다.
EntityManagerFactory는 하나만 생성해서 애플리케이션 전체에서 공유
엔티티 매니저는 쓰레드간 공유X (사용후 버림)
JPA의 모든 데이터 변경은 트랜잭션 안에서 실행
✔️ JPQL ( Java Persistence Query Language)
테이블이 아닌 엔티티 객체를 대상으로 하는 쿼리이다.
JPA는 SQL을 추상화한 JPQL 객체 지향 쿼리 언어를 제공한다.
SQL 문법과 유사하며 SELECT, FROM, WHERE, GROUP BY, HAVING, JOIN 지원
JPQL : 엔티티 객체를 대상으로 쿼리
SQL : 데이터베이스 테이블을 대상으로 쿼리
🔖 학습내용 출처
자바 ORM 표준 JPA 프로그래밍 - 기본편 / 김영한
자바 ORM 표준 JPA 프로그래밍 - 기본편 강의 | 김영한 - 인프런
김영한 | JPA를 처음 접하거나, 실무에서 JPA를 사용하지만 기본 이론이 부족하신 분들이 JPA의 기본 이론을 탄탄하게 학습해서 초보자도 실무에서 자신있게 JPA를 사용할 수 있습니다., 실무에서도
www.inflearn.com
'Back-End > JPA' 카테고리의 다른 글
JPA - 1:N 단방향과 양방향에 대해서 (0) | 2024.07.09 |
---|---|
JPA - 다양한 연관관계 매핑 (0) | 2024.07.09 |
JPA - 연관관계 매핑 기초 (0) | 2024.07.05 |
JPA - 엔티티 매핑 (0) | 2024.07.05 |
JPA - 영속성 관리 (0) | 2024.07.01 |