강의 목표 - 객체와 테이블 설계 매핑, JPA 내부 동작 방식 이해
객체와 테이블을 잘 생성하고 매핑하는 것의 중요성
SQL 중심적인 개발의 문제점
데이터베이스 세계의 주도권 - 관계형 DB (Oracle, MySQL)
- 무한 반복, 지루한 코드, 패러다임의 불일치의 문제
관계형 DB를 쓰는 상황에서 SQL에 의존적인 개발을 피하기 어렵다.
- 패러다임의 불일치의 문제
관계형 DB와 객체가 나온 사상이 다르다.
→ 현실적인 대안은 관계형 DB
자바 컬렉션에 넣을 때는 문제가 단순하지만, 관계형 DB에 넣고 빼낼 때 SQL 매핑 작업이 번잡함.
객체를 자바 컬렉션에 저장하듯이 DB에 저장할 수 없을까?
→ JPA
JPA
- Jave Persistence API
- 자바 진영의 ORM 기술 표준
ORM
- Object-relational mapping
- 객체는 객체대로, 관계형 DB는 관계형 DB대로 설계
→ ORM Framework가 중간에서 매핑
JPA는 애플리케이션과 JDBC 사이에서 동작하는 인터페이스의 모음이다.
JPA가 필요한 이유
- SQL 중심적인 개발에서 객체 중심으로 개발
- 생산성
- 저장 : jpa.persist(member)
- 조회 : Member member = jpa.find(memberld)
- 수정 : member.setName("변경할 이름")
- 삭제 : jpa.remove(member)
- 유지보수
- 기존에는 필드 변경시 모든 SQL을 수정해야 했음
- JPA를 이용한다면 필드만 추가(SQL은 JPA가 처리)
- JPA와 패러다임의 불일치 해결
- 상속
- JPA와 연관관계, 객체 그래프 탐색
- 신뢰할 수 있는 엔티티, 계층
- 비교(동일한 트랜잭션에서 조회한 엔티티는 같음을 보장)
JPA의 성능 최적화 기능
- 1차 캐시와 동일성 보장
- 같은 트랜잭션 안에서는 같은 엔티티를 반환 - 약간의 조회 성능 향상
- 트랜잭션을 지원하는 쓰기 지연
- 트랜잭션을 커밋할 때까지 INSERT SQL을 모아 JDBC BATCH SQL 기능을 사용하여 한 번에 SQL 전송
- UPDATE, DELETE로 인한 로우(ROW)락 시간 최소화
- 트랜잭션 커밋 시 UPDATE, DELETE SQL 실행하고 바로 커밋
- 지연 로딩과 즉시 로딩
- 지연 로딩 : 객체가 실제 사용될 때 로딩
- 즉시 로딩 : JOIN SQL로 한 번에 연관된 객체까지 미리 조회 (옵션으로 선택 가능)
참고 강의 :
자바 ORM 표준 JPA 프로그래밍 - 기본편 - 인프런 | 강의
JPA를 처음 접하거나, 실무에서 JPA를 사용하지만 기본 이론이 부족하신 분들이 JPA의 기본 이론을 탄탄하게 학습해서 초보자도 실무에서 자신있게 JPA를 사용할 수 있습니다., - 강의 소개 | 인프런
www.inflearn.com
'JPA > 자바 ORM 표준 JPA 프로그래밍 - 기본편' 카테고리의 다른 글
[자바 ORM 표준 JPA 프로그래밍 - 기본편] 5. 연관관계 매핑 기초(2) (0) | 2022.12.29 |
---|---|
[자바 ORM 표준 JPA 프로그래밍 - 기본편] 5. 연관관계 매핑 기초(1) (0) | 2022.12.28 |
[자바 ORM 표준 JPA 프로그래밍 - 기본편] 4. 엔티티 매핑 (0) | 2022.12.01 |
[자바 ORM 표준 JPA 프로그래밍 - 기본편] 3. 영속성 관리 (0) | 2022.11.29 |
[자바 ORM 표준 JPA 프로그래밍 - 기본편] 2. JPA 시작 (0) | 2022.11.28 |