JPA를 알아보자-(1) JPA란?
JPA 실행구조
애플리케이션과 JDBC 사이에서 동작한다. JDBC와 Hibernate를 활용하여 DB와 소통한다. DB언어를 직접 사용하지 않아도 알아서 Table을 생성해주고 간단한 CRUD는 물론 Foreign Key 설정까지 해준다.
JPA 장점
● 유지보수 용이 DB언어를 직접 사용하지 않고 자동으로 생성하기 때문에 column 변경시 자바상에서 멤버 변수만 추가하면 된다.
● Hibernate로 45가지 DB 언어 연동 가능
Persistence Context & Entity
JPA는 Persistence Context를 활용해 DB연결을 최소한으로 할 수 있다.
Persistence Context는 github에서 commit하기 전 단계인 스테이징(staging) 상태와 비슷한 형태로 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() 구문이 없는 이유이다.
댓글남기기