자카르 지속성
Jakarta Persistence자카르타 지속성(JPA, 이전 Java Persistence API)은 기업 Java 애플리케이션의 관계형 데이터 관리를 기술하는 자카르타 EE 애플리케이션 프로그래밍 인터페이스 규격이다.
이 맥락에서 지속성은 다음 세 가지 영역을 다룬다.
- API 자체(에 정의됨)
javax.persistence꾸러미 - 자카르타 지속성 쿼리 언어(JPQL, 이전 Java 지속성 쿼리 언어)
- 객체/관계 메타데이터
JPA의 기준 구현은 EclipseLink이다.
역사
JPA 1.0 규격의 최종 출시일은 자바 커뮤니티 프로세스 JSR 220의 일부로 2006년 5월 11일이었다.JPA 2.0 규격은 2009년 12월 10일 발표되었다(Java EE 6 플랫폼에는 JPA[1] 2.0이 필요하다).JPA 2.1 규격은 2013년 4월 22일 출시되었다(Java EE 7 플랫폼에는 JPA 2.1이[2] 필요하다).JPA 2.2 사양은 2017년 여름에 출시되었다.
엔티티
지속성 엔터티는 상태가 일반적으로 관계형 데이터베이스의 테이블에 유지되는 경량 Java 클래스다.그러한 엔터티의 인스턴스는 표의 개별 행에 해당한다.엔터티는 일반적으로 다른 엔터티와 관계를 가지며, 이러한 관계는 객체/관계 메타데이터를 통해 표현된다.이 메타데이터는 주석을 사용하여 엔티티 클래스 파일에 직접 지정하거나 애플리케이션과 함께 배포된 별도의 XML 설명자 파일에 지정될 수 있다.
쿼리 언어
자카르타 지속성 쿼리 언어(JPQL, 이전 Java 지속성 쿼리 언어)는 관계형 데이터베이스에 저장된 엔티티에 대해 쿼리를 한다.쿼리는 구문에서는 SQL 쿼리와 유사하지만 데이터베이스 테이블과는 직접 연결되지 않고 엔티티 객체에 대해 작동한다.
동기
EJB 3.0 규격을 도입하기 전에는 많은 기업 Java 개발자들이 엔티티 콩 대신 지속성 프레임워크(예: 최대 절전 모드)나 데이터 액세스 개체에서 제공하는 경량 영구 객체를 사용했다.이는 이전 EJB 규격에서 엔티티 콩이 훨씬 복잡한 코드를 요구하고 무거운 자원 발자국을 부과했으며, 콩과 DAO 객체 또는 지속성 프레임워크 사이의 소스 코드의 상호연결 및 의존성 때문에 자바 EE 애플리케이션 서버에서만 사용될 수 있었기 때문이다.따라서, 원래 제3자 지속성 프레임워크에서 제시된 많은 기능이 자바 지속성 API에 통합되었고, Virownatter와 TopLink Essentials와 같은 프로젝트는 자바 지속성 API 사양의 구현이 되었다.
관련 기술
엔터프라이즈 빈스
EJB 3.0 사양(Java EE 5 플랫폼의 자체 부분)에는 Java Persistence API의 정의가 포함되었다.그러나 개발자들은 이 지속성 API를 사용하는 애플리케이션을 실행하기 위해 EJB 컨테이너나 Java EE 애플리케이션 서버가 필요하지 않다.[3]Java Persistence API의 향후 버전은 EJB JSR/사양이 아닌 별도의 JSR 및 사양으로 정의된다.
Java Persistence API는 EJB 2.0 CMP(Container-Managed Persistence)의 지속성 솔루션을 대체한다.
Java Data Objects API
Java Persistence API는 부분적으로 Java Data Objects API와 EJB 2.0 CMP(Container Managed Persistence) API를 통합하기 위해 개발되었다.두 API 각각을 지원하는 대부분의 제품은 자바 지속성 API를 지원한다.
Java Persistence API는 ORM(Object-Relational Mapping)에 초점을 맞추어 관계형 데이터베이스 관리 시스템에만 지속성을 지정한다. 일부 JPA 제공자는 JPA 설계의 범위를 벗어나지만 다른 데이터베이스 모델을 지원한다.JPA 규격의 도입부에는 다음과 같이 기술하고 있다: "이 작업의 기술적 목표는 Java 도메인 모델을 이용하여 Java 애플리케이션 개발자에게 관계형 데이터베이스를 관리하는 객체/관계형 매핑 기능을 제공하는 것이다."[4]
Java Data Objects 규격은 ORM뿐만 아니라 다른 유형의 데이터베이스 모델(예: 플랫 파일 데이터베이스 및 문서 데이터베이스를 포함한 NoSQL 데이터베이스)에 대한 지속성을 지원한다.
서비스 데이터 개체 API
Java Persistence API의 설계자는[5] 최대 절전 모드와 TopLink와 같은 객체-관계 매핑 도구에서 많은 핵심 영역을 추출하여 관계 지속성을 제공하는 것을 목표로 하였다.Java Persistence API는 EJB 3.0에 포함됨으로써 EJB 2.0을 개선하고 대체했다.Service Data Objects(SSO) API(JSR 235)는 Java Persistence API의 목적과 매우 다르며 보완적인 것으로 간주된다.SDO API는 관계형 데이터와 다중 프로그래밍 언어만이 아니라 서비스 지향 아키텍처, 다중 데이터 형식을 위해 설계되었다.자바 커뮤니티 프로세스는 자바 버전의 SDO API를 관리하고, C++ 버전의 SDO API는 OASIS를 통해 관리한다.
최대 절전 모드
개빈 킹이 설립한 겨울잠은 자바에 오픈 소스 객체 관계 매핑 프레임워크를 제공한다.버전 3.2 이상에서는 Java Persistence API를 위한 구현을 제공한다.[8][9]킹은 JSR 220에 JBoss를 대표했으며 [10]JCP 전문가 그룹은 JPA 개발을 담당했다.이로 인해 JPA와 동면기의 관계를 둘러싼 논란과 추측이 끊이지 않았다.Sun Microsystems는 최대 절전 모드와 Java Data Objects를 포함한 여러 프레임워크에서 아이디어가 나왔다고 말했다[11].
스프링 데이터 JPA[12]
스프링 데이터 JPA는 자바 애플리케이션 프레임워크 스프링에 기반한 도메인 중심 설계의 핵심 구성 요소인 저장소 추상화의 구현이다.이용 가능한 모든 JPA 구현을 투명하게 지원하고, 데이터베이스 질의의 편리한 실행뿐만 아니라 CRUD 운영도 지원한다.
버전 이력
JPA 2.0
JPA 2.0의 새로운 버전 개발은 JSR 317로 자바 커뮤니티 프로세스에서 2007년 7월에 시작되었으며, JPA 2.0은 2009년 12월 10일에 최종 승인되었다.JPA 2.0의 초점은 일부 인기 ORM 공급업체에 존재하지만 JPA 1.0에 대해 합의된 승인을 얻을 수 없는 기능을 다루는 것이었다.
주요 기능은 다음과 같다.
- 객체 관계 매핑 기능 확장
- ORM에서 다대일 관계를 갖는 내장된 오브젝트 컬렉션 지원
- 순서 목록
- 액세스 유형 조합
- 기준 쿼리 API
- SQL 힌트의 표준화
- DDL 생성을 지원하는 추가 메타데이터 표준화
- 유효성 확인 지원
- 공유 개체 캐시 지원.
JPA 2.0을 지원하는 공급업체:
- 바투 JPA
- DataNucleus(이전의 JAPANS)
- EclipseLink(이전의 Oracle TopLink)
- IBM, WebSphere Application Server용[13]
- 최대 절전 모드가 있는 JBoss
- 오브젝트DB
- 오픈JPA
- 오리엔트DB
- Versant Corporation JPA(객체 데이터베이스)[14]
JPA 2.1
JPA 버전 2.1의 개발은 JSR 338로 2011년 7월에 시작되었으며 JPA 2.1은 2013년 5월 22일에 최종 승인되었다.
주요 기능은 다음과 같다.
- 데이터베이스와 개체 유형 간의 사용자 지정 코드 변환을 허용하는 변환기
- 기준 API를 통해 대량 업데이트 및 삭제를 허용하는 기준 업데이트/삭제
- 개체의 부분 또는 지정된 가져오기 또는 병합에 대한 도면요소 그래프.
- 산술 하위 쿼리, 일반 데이터베이스 함수, 조인 ON 절 및 TREATE 옵션과 같은 JPQL/기준 강화.
- 스키마 생성
- 저장 프로시저 지원
JPA 2.1을 지원하는 공급업체:
JPA 2.2
유지관리 릴리스인 JPA 2.2의 개발은 JSR 338에 따라 2017년에 시작되었다.정비 검토는 2017년 6월 19일에 승인되었다.
주요 기능은 다음과 같다.
- 모든 관련 주석에 @Repeatable 추가
- 메타 노트에 사용할 JPA 주석 지원
- 쿼리 결과 스트리밍
- AttributeConverters가 CDI에 노출될 수 있는 기능
- Java 8 날짜 및 시간 유형 지원
JPA 2.2를 지원하는 공급업체:
- DataNucleus(버전 5.1부터)
- EclipseLink(버전 2.7부터)
- 최대 절전 모드(버전 5.3부터)
- OpenJPA(버전 3.0.0부터)
자카르 지속성 3.0
JPA는 2019년에 자카르타 퍼지스틱스로 개칭되었고, 2020년에 버전 3.0이 출시되었다.여기에는 패키지와 속성의 이름을 javax.persistence에서 jakarta.persistence로 바꾸는 것이 포함되었다.
자카르타 지속성 3.0을 지원하는 공급업체:
- DataNucleus(버전 6.0부터)
- EclipseLink(버전 3.0부터)
- 최대 절전 모드(버전 5.5부터)
참고 항목
참조
- ^ "JavaEE 6 tutorial". Oracle.
- ^ "JavaEE 7 tutorial". Oracle.
- ^ 최대 절전 모드 엔티티 매니저: Java SE 환경
최대 절전 모드 EntityManager: Java SE 환경에서 EntityManager 획득 - ^ "Jakarta Persistence". jakarta.ee. Retrieved 2021-10-05.
- ^ "JSR 220 Members".
- ^ Barreto, Charlton. "SDO and JPA". Digital Walkabout. Archived from the original on 13 August 2011. Retrieved 5 May 2011.
- ^ Edwards, Mike. "SDO and Java Persistence Architecture (JPA)". Open SOA. osoa.org. Retrieved 5 May 2011.
- ^ "hibernate.org - Java Persistence with Hibernate". JBoss. Retrieved 2008-11-17.
Hibernate implements the Java Persistence object/relational javaAPI and persistence management interfaces
- ^ Java Persistence with Hibernate. Manning Publications. ISBN 9781617290459. Retrieved 8 December 2013.
Gavin King is the founder of the Hibernate project
- ^ "JBoss.com - Industry Leadership". JBoss. Retrieved 2008-11-17.
JSR 220, EJB 3.0 Spec Committee, Gavin King, Bill Burke, Marc Fleury
- ^ "Java Persistence API FAQ". Sun Microsystems. Archived from the original on 2008-08-22. Retrieved 2010-07-01.
The Java Persistence API draws upon the best ideas from persistence technologies such as Hibernate, TopLink, and JDO
- ^ "Spring Data - Project website". Pivotal. Retrieved 2018-02-26.
- ^ "IBM WebSphere Application Server V7 Feature Pack for OSGi Applications and Java Persistence API". Download web site. IBM. 27 April 2010. Retrieved 8 December 2013.
- ^ "Versant JPA 2-Step Download". Download web site. Actian. Retrieved 8 December 2013.
외부 링크
| Wikibooks는 Java Persistence라는 주제에 관한 책을 가지고 있다. |
일반 정보
자습서
- Java EE 6 지속성 API Javadoc
- Java EE 6 지속성 API 튜토리얼
- Java EE 7 지속성 API Javadoc
- Java EE 7 지속성 API 튜토리얼
- Java EE 5 자습서의 지속성