JPA는 자바가 DB (데이터베이스) 와 상호작용하게 해주는 인터페이스다.
JPA는 자바의 ORM 인터페이스 모음이며 ORM은 DB와 상호작용을 편리하게 해주는 기술이다.
😎 JPA는 반복적인 CRUD(생성/조회/수정/삭제) SQL을 처리해준다. 개발자는 어떤 SQL이 실행될지 생각만하면 된다. 네이티브SQL이란 기능을 통해 어렵거나 성능이 우려될 때 SQL을 직접 작성해도 된다.
이를 위해 JPA에는 영속성 컨텍스트란 개념이 존재한다.
영속성 컨텍스트를 잘 설명해둔 글
https://developer111.tistory.com/entry/jpa-%EC%98%81%EC%86%8D%EC%84%B1-%EC%BB%A8%ED%85%8D%EC%8A%A4%ED%8A%B8-%EA%B0%9C%EB%85%90
영속성이란 데이터가 영구히 저장되는 성질 (프로그램이 종료되더라도 사라지지 않는다)
EntityManager (엔티티매니저) 를 통해 관리되며, 애플리케이션과 DB 사이에서 엔티티의 생명주기를 관리한다.
영속성 컨텍스트를 활용하면 CUD 기능을 엔티티매니저 가 관리해준다. 사람들이 JPA를 선택하는 가장 중요한 이유 중 하나다.
영속성 컨텍스트를 통한 데이터 조회 흐름
- 클라이언트의 데이터 조회 요청
- 엔티티 매니저가 1차캐시를 조회
- 1차캐시에 데이터가 없을시 DB 검색
- 찾은 데이터를 1차캐시에 저장하고 클라이언트에 반환
한번 1차캐시에 저장된 데이터는 DB 조회 없이 즉각 반환할 수 있다
- 클라이언트의 데이터 조회 요청
- 엔티티 매니저가 1차캐시를 조회
- 1차캐시에 데이터를 확인해 바로 클라이언트에 반환
JPA에서 사용되는 쿼리언어 JPQL
https://velog.io/@rmeos/JPQL-객체지향-쿼리언어