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.0과 jpa-2.1 간의 차이점
jpa-2.0 및 jpa-2.1 기능 사이의
몇 가지 주요 차이점을 인식해야 합니다. 다음을 참조하십시오.
- PersistenceProvider 클래스 이름 차이
jpa-2.0- IBM® 제공자:
com.ibm.websphere.persistence.PersistenceProviderImpl - OpenJPA 제공자:
org.apache.openjpa.persistence.PersistenceProviderImpl
- IBM® 제공자:
- 캐싱 작동 차이
jpa-2.0: 기본적으로 캐싱이 사용 안함으로 설정되어 있습니다. 애플리케이션이 L2 캐시를 이용해야 하는 경우에는 이를 명시적으로 사용으로 설정해야 합니다.- 개선/위빙 차이점
jpa-2.0: OpenJPA는 개선된 엔티티를 필요로 합니다. 자세한 정보는 제품 문서에서 JPA 2.0에 대한 JPA 엔티티 개선사항 을 참조하십시오.
- 데이터 소스 사용 차이점
jpa-2.0기능은 비JTA 데이터 소스를 거의 사용하지 않으므로 애플리케이션을 튜닝할 때 비JTA 데이터 소스가 많이 필요하지 않습니다.
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 동등한 기능: Externalizer 기능
- @Index 및 @ForeignKey 어노테이션
JPA 2.1 스펙의 11.1.19 및 11.1.23절을 참조하십시오.
OpenJPA 동등한 기능: OpenJPA's @Index 및 @ForeignKey.
- EntityManager, 의 유틸리티 메서드 풀기 캐시
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 오브젝트.