본문으로 건너뛰기

11.3 JPA주요 개념

JPA 관련 용어설명
엔티티엔티티는 데이터베이스 테이블에 연결되는 자바 빈이다. 엔티티는 POJO로 구현하고 어노테이션을 사용하여 연결할 데이터베이스 테이블 이름을 지정한다. 엔티티 작업을 위한 API는 엔티티 관리자가 제공한다.
엔티티 관리자엔티티 관리자는 애플리케이션에 대한 CRUD 작업을 위한 인터페이스를 제공한다. 또 영속성 컨텍스트에서는 엔티티 상태를 관리하고 엔티티와 데이터베이스간의 동기화를 담당한다.
퍼시스턴스 컨텍스트퍼시스턴스 컨텍스트는 엔티티 관리자가 관리하는 메모리상의 엔티티 집합이다. 엔티티 관리자는 컨텍스트에서 엔티티 개체와 라이프 사이클을 관리한다.
엔티티 관리자 팩토리엔티티 관리자 팩토리는 엔티티 관리자를 생성하는 팩토리의 역할을 한다.
퍼시스턴스 유닛퍼시스턴스 유닛은 엔티티 관리자 단위이다. 퍼시스턴스에 대한 구성 정보(엔티티 클래스, 데이터 소스 등)를 유지하는 저장소이다. XML 파일 (persistence.xml)에 정의한다.
퍼시스턴스 프로바이더EJB 컨테이너나 애플리케이션에서 호출하여 엔티티 관리자 팩토리를 생성한다. JPA 엔진의 핵심 기능이다
JPQLJPQL(Java Persistence Query Language)은 엔티티 및 엔티티를 쿼리하는 데 사용하는 SQL과 유사한 쿼리 언어이다. JPQL를 실행하기 위한 API는 엔티티 관리자가 제공하고 있다.

표 1 . JPA 관련 주요 용어

애플리케이션은 JPA를 사용해 RDBMS에 있는 테이블의 레코드를 Java 오브젝트 처럼 다룰 수 있다. 테이블 상의 레코드에 대응하는 자바 오브젝트를 엔티티라고 하며 이 엔티티들은 메모리상의 퍼시스턴스 컨텍스트(PersistenceContext)에서 관리한다.

데이터베이스 쿼리 결과로 생성되는 엔티티들은 퍼시스턴스 컨텍스트에 저장하여 유지된다. 엔티티의 생성이나 업데이트는 이 퍼시스턴스 컨텍스트에서 저장되어 트랜잭션 시점에 데이터베이스에 반영된다. 이처럼 퍼시스턴스 컨텍스트는 데이터베이스에 반영되기 전에는 캐쉬처럼 다루어지기 때문에 1차 캐시라고도 한다. 클러스터 환경에서 여러 대의 머신에서 퍼시스턴스 컨텍스트 간에 공유하는 캐시를 2차 캐시(2nd Level Cache)라고 한다.