본문 바로가기
학습

[Java] JPA 강의 - 1, 2 (JPA 소개)

by 공덕뉸나 2024. 1. 11.

예전에 실무를 하게 되면서 JPA 강의를 듣게 되었는데 기억이 안나는 부분도 있고, 복습을 하고 싶어서 다시 학습을 시작했다.

 

 

나는 Inflearn에서 김영한의 자바 ORM 표준 JPA 프로그래밍 - 기본편 강의로 학습했다.

강의를 들으면서 핵심 내용이나 내가 기록하고 싶은 내용 위주로 정리를 해보려고 한다.

 

1. JPA란?

- Java Persistence API

- 자바 진영의 ORM 기술 표준

 

2. ORM이란?

- 객체 관계 매핑 (Object-relational mapping)

- 객체는 객체대로, 관계형 데이터베이스는 관계형 데이터베이스대로 설계

 

3. JPA를 사용해야 하는 이유

- SQL 중심적 개발에서 객체 중심으로 개발하기 위함

- 생산성

: CRUD(저장, 조회, 수정, 삭제)가 편리함

- 유지보수

: 기존엔 빌드 변경시 모든 SQL을 수정해야 했지만 JPA는 필드만 추가하면 됨

- 패러다임 불일치 해결

: 상속, 연관관계, 객체 그래프 탐색에서 개발자가 할 일이 줄어듦 (JPA가 쿼리를 처리해줌)

: JPA와 비교하기 -> 동일한 트랜잭션에서 조회한 엔티티는 같음을 보장

- 성능 최적화 기능

: 1차 캐시와 동일성 보장

  -> 같은 트랜잭션 안에서는 같은 엔티티를 반환

: 쓰기 지연

  -> INSERT (커밋하는 순간 데이터베이스에서 INSERT SQL을 모아서 보냄)

  -> UPDATE (커밋하는 순간 데이터베이스에 UPDATE, DELETE SQL을 보냄)

: 지연 로딩

  -> 지연 로딩 (객체가 실제 사용될 때 로딩)

  -> 즉시 로등 (JOIN SQL로 한 번에 연관된 객체까지 미리 조회)

 

4. 객체와 테이블을 생성하고 매핑하기

- @Entity : JPA가 관리할 객체

- @Id : 데이터베이스 PK와 매핑

 

주의

- 엔티티 매니저는 다 사용 후에 버려야함 (close() 해줘야함)

- JPA의 모든 데이터 변경은 트랜잭션 안에서 실행

 

5. JPQL(Java Persistence Query Language)

-  JPA를 사용하면 엔티티 객체를 중심으로 개발

- 애플리케이션이 필요한 데이터만 DB에서 불러오려면 결국 검색 조건이 포함된 SQL 필요

- JPQL은 엔티티 객체를 대상으로 쿼리 날림 (SQL은 데이터베이스 테이블 대상)

- 테이블이 아닌 객체를 대상으로 검색하는 객체 지향 쿼리

- 특정 데이터베이스 SQL에 의존하지 않음 (방언을 바꿔도 JPQL 코드를 바꿀 필요 없음)

- 객체지향 SQL임

 

'학습' 카테고리의 다른 글

[Java] JPA 강의 - 4 (엔티티 매핑)  (0) 2024.01.17
[Java] JPA 강의 - 3 (영속성 관리)  (0) 2024.01.11
[Java] Arrays 클래스  (0) 2023.10.17
[Java] Stack & Queue  (0) 2023.10.16
[Java] HashMap, TreeSet  (0) 2023.10.13