JPA(Java Persistence API) 아키텍처
데이터 지속은 애플리케이션 실행 간 데이터를 유지하는 기능입니다. 지속성은 관계형 데이터베이스에 대한 필수 액세스로 인해 엔터프라이즈 애플리케이션에 중요합니다. 이 환경에 개발되는 애플리케이션은 자체적으로 지속성을 관리하거나 써드파티 솔루션을 사용하여 지속성에 대한 데이터베이스 업데이트 및 검색을 처리해야 합니다. JPA(Java™ Persistence API)는 EJB 스펙의 지속성 및 오브젝트 관계형 맵핑과 함수를 관리하는 메커니즘을 제공합니다.
JPA 스펙은 벤더 특정 맵핑 구현에 의존하지 않고 오브젝트-관계형 맵핑을 내부적으로 정의합니다. JPA는 Java EE 환경에 적용되는 Java 프로그래밍 모델을 기반으로 하지만 JPA는 애플리케이션 기능을 테스트하기 위해 Java EE 환경에서 작동할 수 있습니다.
JPA는 지속성 프로그래밍 모델의 단순화를 나타냅니다. JPA
스펙은 벤더 특정 맵핑 구현에 의존하지 않고 오브젝트-관계형
맵핑을 명시적으로 정의합니다. JPA는 어노테이션 또는 XML을 사용하여 하나 이상의 데이터베이스 테이블로 오브젝트를 맵핑함으로써
오브젝트 관계형 맵핑의 중요한 태스크를 표준화합니다. 지속성
프로그래밍 모델을 보다 단순화하려면 다음을 수행하십시오.
- EntityManager API는 데이터베이스의 오브젝트를 지속시키거나 업데이트, 검색 또는 제거할 수 있습니다.
- EntityManager API 및 오브젝트-관계형 맵핑 메타데이터는 지속성을 유지보수하기 위해 JDBC 또는 SQL 코드를 작성하지 않고 대부분의 데이터베이스 조작을 처리합니다.
- JPA는 작업 중인 데이터베이스에 고유한 SQL 조회를 작성하지 않고 오브젝트를 검색하는 데 사용할 수 있는 조회 언어를 제공합니다. 이 언어는 독립적인 EJB 조회 언어(JPQL이라고도 함)를 확장합니다.
JPA는 Java EE(Java Enterprise Edition) 컨테이너의 내부와 외부 모두에서 작동하도록 설계됩니다. JPA를 컨테이너 내부에서 실행하는 경우 애플리케이션은 해당 컨테이너를 사용하여 지속성 컨텍스트를 관리할 수 있습니다. JPA를 관리할 수 있는 컨테이너가 없는 경우 애플리케이션이 직접 지속성 컨텍스트 관리를 처리해야 합니다. 컨테이너 관리 지속에 대해 설계된 애플리케이션에는 지속성을 처리하기 위해 많은 코드 구현이 필요하지 않지만 이러한 애플리케이션은 컨테이너 외부에서 사용할 수 없습니다. 자체 지속성을 관리하는 애플리케이션은 컨테이너 환경 또는 Java SE 환경에서 작동할 수 있습니다.
EJB 3.x 프로그래밍 모델을 지원하는 Java
EE 컨테이너는 지속성 제공자라고도 부르는 JPA 구현을 지원해야 합니다. JPA
지속성 제공자는 다음 요소를 사용하여 EJB 3.x 환경에서
보다 쉽게 지속성을 관리할 수 있습니다.
- 지속 단위
- 엔티티 클래스 오브젝트와 관계형 데이터베이스의 관계를 설명하는 선언 메타데이터로 구성됩니다. EntityManagerFactory는 이 데이터를 사용하여 EntityManager를 통해 액세스할 수 있는 지속성 컨텍스트를 작성합니다.
- EntityManagerFactory
- 데이터베이스 상호작용을 위한 EntityManager를 작성하는 데 사용됩니다. 애플리케이션 서버 컨테이너는 일반적으로 이 함수를 제공하지만, JPA 애플리케이션 관리 지속성을 사용하는 경우 EntityManagerFactory가 필요합니다. EntityManagerFactory 인스턴스는 지속성 컨텍스트를 나타냅니다.
- 지속성 컨텍스트
- 애플리케이션이 현재 조작하는 활성 인스턴스 세트를 정의합니다. 지속성 컨텍스트는 수동으로 또는 주입을 통해 작성할 수 있습니다.
- EntityManager
- 애플리케이션이 사용하는 엔티티 오브젝트의 활성 콜렉션을 유지보수하는 자원 관리자.
EntityManager는 오브젝트-관계형 맵핑의 데이터베이스 상호작용 및 메타데이터를 처리합니다. EntityManager 인스턴스는
지속성 컨텍스트를 나타냅니다. 컨테이너의 애플리케이션은
애플리케이션의 인젝션을 통하거나 Java
컴포넌트 네임스페이스에서 찾아 EntityManager를 얻을 수 있습니다. 애플리케이션이 해당
지속성을 관리하는 경우 EntityManager는 EntityManagerFactory에서 얻습니다. 주의: EntityManager 인젝션은 다음 아티팩트에만 지원됩니다.
- EJB 3.x 세션 Bean
- EJB 3.x 메시지 구동 Bean
- 서블릿, 서블릿 필터 및 리스너
- 인터페이스 javax.servlet. jsp.tagext.Tag 및 javax.servlet.jsp.tagext.SimpleTag를 구현하는 JSP 태그 핸들러
- JSF(JavaServer Faces) 관리 Bean
- 애플리케이션 클라이언트의 기본 클래스
- 엔티티 오브젝트
- 가장 간단한 양식으로 데이터베이스 테이블의 행을 나타내는 단순 Java 클래스. 엔티티 오브젝트는 concrete 클래스 또는 abstract 클래스입니다. 이 클래스는 특성 또는 필드를 사용하여 상태를 유지합니다.