Written by
최태열
on
on
JPA1
JPA란?
JPA란?
JPA 실행구조
애플리케이션과 JDBC 사이에서 동작한다.
JDBC와 Hibernate를 활용하여 DB와 소통한다.
DB언어를 직접 사용하지 않아도 알아서 Table을 생성해주고
간단한 CRUD는 물론 Foreign Key 설정까지 해준다.
JPA 장점
-
유지보수 용이
DB언어를 직접 사용하지 않고 자동으로 생성하기 때문에 column 변경 시 자바 상에서 멤버 변수만 추가하면 된다.
-
하이버네이트로 45가지 DB 언어 연동 가능
Persistence Context & Entity
JPA는 Persistence Context를 활용해 DB연결을 최소한으로 할 수 있다.
Persistence Context는 github에서 commit까지 하고 push 하기 전 단계인 스테이징 상태에 비슷한 형태로 Database에서는 실제로 적용되진 않은 상태이다.
EntityTransaction의 commit 메소드를 사용해야 실제 DB에 적용이 된다.
- 단계
- Entity를 1차 캐시에 등록
- 1차 캐시에 등록된 Entity에 해당하는 insert 구문을 생성하여 SQL 저장소에 등록
- commit() 메소드로 transaction 종료
- SQL 저장소에 저장되어 있던 모든 SQL 문장이 한번에 Database로 전송
→ SQL 구문을 한번에 처리할 수 있기 때문에 성능 최적화
-
dirty checking
캐시에 존재하는 내용과 비교하여 변경 되어있는지 알아서 확인한다.
-
snapshot
entity가 1차 캐시에 저장될 시 그것을 복사해서 저장해두는 곳이다. dirty checking을 통해 변경을 감지하고 알아서 update를 한다.JPA에 자체 update() 구문이 없는 이유이다.
Discussion and feedback