객체를 관계형 DB에 저장
객체를 관계형 데이터베이스 저장
객체와 객체형 데이터베이스의 차이
- 상속 (객체형 DB는 상속 x)
- 연관관계
- 데이터 타입
<Album 조회>
→ DB가 아닌 자바 컬렉션에 저장하는게 더 편해보임
계층형 아키텍처 진정한 의미의 계층 분할이 어렵다.
모델링 할수록 매핑 작업만 늘어난다.
➡️ 그래서 객체를 컬렉션에 저장하듯이, 관게형 데이터 베이스에 저장하고 불러오도록 하는 것이 JPA이다.
jpa란 ?
자바 진영의 ORM 기술 표준
ORM
- Object-relational-mapping (객체 관계 매핑)
- 객체는 객체대로 설계하고, 관계형 데이터베이스는 관계형 데이터베이스대로 설계
- ORM이 중간의 차이들을 해결해주는 것임
JPA는 애플리케이션과 JDBC 사이에서 동작
JPA 동작 - 저장
JPA 동작 - 조회
<기존>
jpa는 관계형 데이터 베이스와 객체의 패러다임의 불일치를 해결해줌
- JPA와 상속
- JPA와 연관관계
- JPA와 객체 그래프 탐색
- JPA와 비교하기
JPA와 상속
INSERT INTO ITEM
INSERT INO ALBUM
→ 패러다임 안맞는게 JPA가 알아서 처리해줌
JPA의 성능 최적하 지원
- 1차 캐시와 동일성(identity) 보장
- 트랜잭션을 지원하는 쓰기 지연(transactional write-behind)
- 지연 로딩, 즉시로딩
옵션 변경하여 지연 → 즉시로딩으로 변경 가능함
1. 지연 로딩 : 객체가 실제 사용될 때 데이터베이스에서 가져옴
<img width="332" alt="image" src="https://user-images.githubusercontent.com/81394850/193565277-8f3cb42d-4a18-449a-bb28-59547f81f864.png">
2. 즉시 로딩 : 멤버 가져오면서 팀도 조인해서 가져옴
<img width="333" alt="image" src="https://user-images.githubusercontent.com/81394850/193565295-24bfd0f3-0e6f-4e87-8d72-2ef83a5ed206.png">
ORM은 객체와 RDB 모두 잘알아야함
[인프런 강의 : 자바 ORM 표준 JPA 프로그래밍 참고]