JPA는 Java Persistence API 의 약어로, 자바 ORM 기술에 대한 API 표준을 일컫습니다.
ORM 이란 'Object Releation Mapping'의 약자로 객체와 관계형 데이터베이스를 매핑 해줍니다.

장점 :
- 특정 데이터베이스에 종속 되지 않음
- 객체지향적으로 설계 가능
- 유지보수가 유리, 생산성이 향상
단점 :
- 복잡한 쿼리 처리 ( 뷰, 프로시저를 활용해야함)
- 성능 저하 위험
- 학습 시간

엔티티 (Entity) : 데이터베이스의 테이블에 대응하는 클래스
@Entity가 붙은 클래스는 JPA 에서 관리하며 엔티티 라고 합니다.
Item.java 클래스를 만들어서 @Entity 어노테이션을 붙이면 이 클래스가 엔티티가 됩니다.
엔티티 매니저 팩토리(Entity Manager Factory) : 엔티티 매니저 인스턴스를 관리하는 주체
애플리케이션 실행 시 하나만 만들어지며, 사용자로 부터 요청이 오면 엔티티 매니저 팩토리로 부터 매니저를 생성 합니다.
엔티티 매니저(Entity Manager) : 영속성 컨텍스트에 접근하여 엔티티에 대한 데이터베이스 작업을 제공합니다.


find() 메소드 : 영속성 컨텍스트에서 엔티티를 검색하고 영속성 컨텍스트에 없을 경우 데이터베이스에서 찾아 영속성 컨텍스트에 저장합니다.
persist() 메소드 : 엔티티를 영속성 컨텍스트에 저장합니다.
remove() 메소드 : 엔티티 클래스를 영속성 컨텍스트에서 삭제합니다.
flush()메소드 : 영속성 컨텍스트에 저장된 내용을 데이터베이스에 반영합니다.

Persistance Context : 버퍼링과 캐싱등을 할수 있게 합니다.
1차 캐시 : 영속성 컨텍스트에 Map<KEY, VALUE>로 저장. Find() 메소드 호출 시 영속성 컨텍스트의 1차 캐시를 조회
* 동일성 보장 : 하나의 트랜잭션에서 같은 키값으로 영속성 컨텍스트 조회시 같은 엔티티 조회 보장(1차 캐시)

* 트랜잭션을 지원 하는 쓰기 지연 : 쓰기 지연 SQL 저장소에 SQL을 쌓아두고 트랜잭션 커밋 시점에 저장된 SQL문을 flush 하여 데이터베이스 반영.
* 변경 감지 : 1차 캐시에 데이터베이스에서 처음 불러온 엔티티의 스냅샷 저장 및 커밋 시점에 변경애뇽을 반영.
즉, update 문을 호출하지 않아도 됨.
'스프링 부트' 카테고리의 다른 글
| 엔티티 매핑 관련 어노테이션 (0) | 2023.04.03 |
|---|---|
| spring boot로 shop 만들어 보기 (0) | 2023.04.03 |
| Lombok 라이브러리의 자주 사용하는 어노테이션. (0) | 2023.04.03 |
| jdk 버전을 import 시켜주기 위한 단축키 (0) | 2023.04.03 |
| 스프링 부트 실습해보기 (0) | 2023.04.03 |