Java Persistence API 2.1 동작 변경사항

애플리케이션에 이미 jpa-2.0 기능을 사용하고 있는 경우에는 마이그레이션 문제를 방지하기 위해 기존 애플리케이션에 jpa-2.0 기능을 계속해서 사용하십시오. 새 애플리케이션의 경우에는 JPA 2.1 스펙에서 사용 가능한 새 기능을 활용할 수 있게 해 주는 jpa-2.1 기능을 사용하는 것이 제일 좋습니다. jpa-2.0 기능 대신 jpa-2.1 기능을 사용하도록 기존 애플리케이션을 변경하려는 경우에는 마이그레이션 프로세스에서 애플리케이션을 조정해야 할 수 있습니다.

jpa-2.0jpa-2.1 간의 차이점

jpa-2.0jpa-2.1 기능 사이의 몇 가지 주요 차이점을 인식해야 합니다. 다음을 참조하십시오.

PersistenceProvider 클래스 이름 차이
jpa-2.0
  • IBM® 제공자:com.ibm.websphere.persistence.PersistenceProviderImpl
  • OpenJPA 제공자: org.apache.openjpa.persistence.PersistenceProviderImpl
jpa-2.1
  • org.eclipse.persistence.jpa.PersistenceProvider
캐싱 작동 차이

jpa-2.0: 기본적으로 캐싱이 사용 안함으로 설정되어 있습니다. 애플리케이션이 L2 캐시를 이용해야 하는 경우에는 이를 명시적으로 사용으로 설정해야 합니다.

jpa-2.1: 기본적으로 EclipseLink 제공자는 L2 캐시 및 QueryCache가 사용으로 설정되어 있습니다. 사용자는 이 설정이 자신의 애플리케이션에 대해 최적의 옵션인지 확인해야 합니다. 클러스터와 같은 분산 환경에서 실행 중인 경우에는 캐시를 사용 안함으로 설정하거나, 서로 다른 노드가 서로 다른 데이터를 보유할 수 있음을 숙지해야 합니다.

개선/위빙 차이점

jpa-2.0: OpenJPA는 개선된 엔티티를 필요로 합니다. 자세한 정보는 제품 문서의 JPA 2.0에 대한 JPA 엔티티 개선사항을 참조하십시오.

jpa-2.1: EclipseLink는 개선되지 않은 엔티티로 작동합니다. WebSphere Application Server는 정적 개선을 지원합니다.

지연 로딩 및 몇 가지 성능 이점과 같은 일부 기능을 사용하지 못할 수 있습니다.

  • jpa-2.0(OpenJPA) 제공자와 함께 사용할 수 있도록 엔티티 클래스가 정적으로 개선된 경우, jpa-2.1 제공자를 사용하려면 이러한 클래스를 먼저 재컴파일해야 합니다.
  • Libertyjpa-2.1 기능을 사용하도록 구성되고 엔티티가 OpenJPA 개선사항을 사용하여 개선되는 경우 다음 오류가 발생합니다.
    java.lang.NoClassDefFoundError:
    org.apache.openjpa.enhance.PersistenceCapable.
  • NoClassDefFoundError는 Liberty 서버가 jpa-2.1을 사용하도록 구성될 때 런타임 시에 OpenJPA 클래스가 서버를 사용할 수 없기 때문에 발생합니다.
    • 이 문제를 해결하려면 애플리케이션을 다시 컴파일하고 엔티티가 OpenJPA 인핸서로 개선되지 않도록 하십시오. 엔티티를 전혀 개선하지 않거나, OpenJPA 개선사항 대신 EclipseLink 개선사항을 사용하여 엔티티를 개선하십시오.
    • 다른 방법으로는, 엔티티를 개선된 상태로 두고 jpa-2.0 기능을 사용하도록 Liberty를 재구성하십시오. 그 결과로 JPA 2.1에서 일부 기능이 유실됩니다.
데이터 소스 사용 차이점

jpa-2.0 기능은 비JTA 데이터 소스를 거의 사용하지 않으므로 애플리케이션을 튜닝할 때 비JTA 데이터 소스가 많이 필요하지 않습니다.

jpa-2.1은 데이터를 읽고 트랜잭션이 활성이 아닐 때 비JTA 데이터 소스 연결을 사용합니다. 이는 이 기능을 사용할 때 비JTA 데이터 소스 연결 풀이 더 커야 함을 의미합니다.

두 JPA 제공자 간의 자세한 차이점은 OpenJPA -> EclipseLink 마이그레이션 안내 페이지를 참조하십시오.

OpenJPA에서 사용 가능한 JPA 2.1 기능

JPA 2.0 제공자인 OpenJPA에는 새 JPA 2.1 기능과 유사한 기능이 있습니다. 이는 jpa-2.0 기능을 사용하는 기존 애플리케이션이 있으며 JPA 2.1 기능을 일부 사용하려는 경우, jpa-2.1 기능으로 전환해야 할 필요가 없음을 의미합니다. 대신 OpenJPA에서 제공하는, 새 기능과 동등한 기능을 사용할 수 있습니다. OpenJPA에서 사용 가능한 몇 가지 주요 JPA 2.1 기능은 다음과 같습니다.

스키마 생성

이 기능을 사용하면 JPA 엔티티 정의에 따라서 DDL을 생성하거나 데이터베이스와 직접 상호작용하여 테이블 스키마를 정의할 수 있습니다. 자세한 정보는 JPA 2.1 스펙의 9.4절을 참조하십시오.

OpenJPA의 동등한 기능: 스키마 맵퍼

엔티티 그래프

이 기능으로 엔티티 오브젝트 그래프의 페치 또는 처리를 지정할 수 있습니다. 자세한 정보는 JPA 2.1 스펙의 3.7절을 참조하십시오.

OpenJPA의 동등한 기능: FetchPlan 및 FetchGroup

스토어드 프로시저 조회

이 기능을 사용하면 데이터베이스에 저장되는 프로시저를 호출할 수 있습니다. 자세한 정보는 JPA 2.1 스펙의 3.10.17절을 참조하십시오.

OpenJPA의 동등한 기능: 조회 호출

기본 속성 유형 변환

이 기능을 사용하여 기본 유형 속성에 대해 속성 엔티티 표시와 데이터베이스 표시 사이에서 변환할 수 있습니다. 자세한 정보는 JPA 2.1 스펙의 3.8절을 참조하십시오.

OpenJPA의 동등한 기능: 익스터널라이저 기능

@Index 및 @ForeignKey 어노테이션

JPA 2.1 스펙의 11.1.19 및 11.1.23절을 참조하십시오.

OpenJPA의 동등한 기능: OpenJPA의 @Index 및 @ForeignKey.

EntityManager, Cache에 대한 유틸리티 랩핑 해제 메소드

JPA 2.1 스펙의 3.1.1 및 7.10절을 참조하십시오.

OpenJPA의 동등한 기능: EntityManagerImpl.unwrap()OpenJPAPersistence.cast().

기본 SQL의 결과 맵핑 중 오브젝트 구현/구축(Construction)

JPA 2.1 스펙의 3.10.16.2.2절을 참조하십시오.

OpenJPA의 동등한 기능: ResultShape 오브젝트.


주제의 유형을 표시하는 아이콘 개념 주제



시간소인 아이콘 마지막 업데이트 날짜: Monday, 5 December 2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-libcore-mp&topic=cwlp_jpa21_behavior
파일 이름: cwlp_jpa21_behavior.html