Liberty가
Java™ Persistence API(JPA)를 사용하는 애플리케이션을
지원할 수 있도록 하려면 필요한 스펙 레벨에 따라 jpa-2.0, jpa-2.1 또는 jpaContainer-2.1 기능을
server.xml 파일에 추가하십시오. 지속성 컨텍스트 및 지속성 단위도 정의해야 하며,
엔티티 관리자 및 엔티티 관리자 팩토리에 대한 액세스도 구성해야 합니다.
시작하기 전에
이 태스크는 JPA를 사용하는 애플리케이션이 배치될
Liberty 서버를 작성했다고 가정합니다.
수동으로 Liberty 서버 작성의 내용을 참조하십시오.
이 태스크 정보
다음 JPA 기능이
Liberty에서 사용 가능합니다.
- jpa-2.0 기능은 JPA 2.0 스펙에 기록된 애플리케이션 관리 및 컨테이너 관리 JPA를 사용하는 애플리케이션을 지원합니다. 지원은 컨테이너 관리 프로그래밍 모델을 지원하기 위한 확장과 함께 Apache OpenJPA에 빌드되었습니다.
- jpa-2.1 기능은 JPA 2.1 스펙에 기록된 애플리케이션 관리 및 컨테이너 관리 JPA를 사용하는 애플리케이션을 지원합니다. 지원은 EclipseLink에서 빌드됩니다. 내장
EclipseLink JPA 제공자를 사용하고 있지 않은 경우 서버 런타임 이미지를
최소화하기 위해 jpaContainer-2.1 기능을 대신 사용할 수
있습니다.
jpaContainer-2.1 기능은
JPA 2.1 스펙에 기록된 애플리케이션 관리 및 컨테이너 관리 JPA를 사용하는 애플리케이션을 지원합니다. 이 기능에는 내장 JPA 제공자가 포함되어 있지 않습니다. 사용자는 공유 라이브러리, 글로벌 라이브러리를 통해
JPA 제공자를 제공하거나 애플리케이션에 임베드된 JPA 제공자를 제공해야 합니다.
WebSphere® Developer Tools를 사용한 JPA 애플리케이션 개발에 대한 정보는
JPA 애플리케이션 개발을 참조하십시오.
프로시저
jpa-2.0, jpa-2.1 또는 jpaContainer-2.1 기능을 server.xml 파일에 추가하십시오.
- 지속성 컨텍스트 및 지속성 단위 정의를 web.xml 파일에 추가하십시오.
예:
<persistence-context-ref>
<persistence-context-ref-name>example/em</persistence-context-ref-name>
<persistence-unit-name>ExamplePersistenceUnit</persistence-unit-name>
</persistence-context-ref>
<persistence-unit-ref>
<persistence-unit-ref-name>example/emf</persistence-unit-ref-name>
<persistence-unit-name>ExamplePersistenceUnit</persistence-unit-name>
</persistence-unit-ref>
- 엔티티 관리자에 대한 액세스를 구성하십시오.
예:
Context ctx = new InitialContext();
UserTransaction tran = (UserTransaction) ctx.lookup("java:comp/UserTransaction");
tran.begin();
EntityManager em = (EntityManager) ctx.lookup("java:comp/env/example/em");
Thing thing = new Thing();
em.persist(thing);
tran.commit();
- 엔티티 관리자 팩토리에 대한 액세스를 구성하십시오.
예:
Context ctx = new InitialContext();
EntityManagerFactory emf = (EntityManagerFactory) ctx.lookup("java:comp/env/example/emf");
EntityManager em = emf.createEntityManager();
EntityTransaction tx = em.getTransaction();
tx.begin();
Thing thing = new Thing();
em.persist(thing);
tx.commit();
int id = thing.getId();
em.close();
jpaContainer-2.1 기능을 사용하는 경우에는 JPA 제공자 JAR 파일을 사용 가능하게 하십시오. 다음 옵션 중 하나를 선택하십시오.
- 모든 애플리케이션이 사용할 수 있도록 JPA 제공자 JAR 파일을 글로벌 라이브러리 위치에 두십시오.
- 애플리케이션에 공유 라이브러리로서 JPA 제공자 JAR 파일을 제공할 수 있도록 서버 구성을 업데이트하십시오.
예를 들어, 다음 단계를 수행하십시오.
서버 구성 파일에서 필요한 JPA 지속성 제공자에
대해 공유 라이브러리를 구성하십시오. 해당 라이브러리를 사용하는 애플리케이션에서
이를 사용할 수 있는지 확인하십시오. 다음 예제는 확장기능 없이 EclipseLink를 JPA 2.1 제공자로 사용하기 위한
Jar 파일의 최소 필수 세트를 보여줍니다. EclipseLink 확장기능을 활용하기 위해
다음 Jar도 포함되어 있을 수 있습니다.- org.eclipse.persistence.dbws.jar
- org.eclipse.persistence.moxy.jar
<library id="eclipselink">
<file name="${server.config.dir}/jpa/org.eclipse.persistence.asm.jar/>
<file name="${server.config.dir}/jpa/org.eclipse.persistence.core.jar"/>
<file name="${server.config.dir}/jpa/org.eclipse.persistence.jpa.jar"/>
<file name="${server.config.dir}/jpa/org.eclipse.persistence.antlr.jar"/>
<file name="${server.config.dir}/jpa/org.eclipse.persistence.jpa.jpql.jar"/>
<file name="${server.config.dir}/jpa/org.eclipse.persistence.jpa.modelgen.jar"/>
</library><application location="myApp.war">
<classloader commonLibraryRef="eclipselink"/>
</application>
Hibernate를
JPA 제공자로 사용하려면 대신 <library> 구성에 다음 Jar 파일 세트를
포함시키십시오.
<library id="hibernate">
<file name="${server.config.dir}/hibernate/antlr-2.7.7.jar"/>
<file name="${server.config.dir}/hibernate/classmate-1.3.0.jar"/>
<file name="${server.config.dir}/hibernate/dom4j-1.6.1.jar"/>
<file name="${server.config.dir}/hibernate/hibernate-commons-annotations-5.0.1.Final.jar"/>
<file name="${server.config.dir}/hibernate/hibernate-core-5.2.6.Final.jar"/>
<file name="${server.config.dir}/hibernate/javassist-3.20.0-GA.jar"/>
<file name="${server.config.dir}/hibernate/jboss-logging-3.3.0.Final.jar"/>
</library>
- 다음 방법 중 하나를 선택하여 JPA 제공자 클래스를 식별하십시오.
- 서버 구성의 JPA 요소에 기본 지속성 제공자를 구성하십시오. 이 구성은
<bell> 요소를 통해 검색되는
PersistenceProvider 서비스를
대체합니다.
<jpa defaultPersistenceProvider="org.eclipse.persistence.jpa.PersistenceProvider"/>
Hibernate의
경우 다음 코드를 사용하십시오.
<jpa defaultPersistenceProvider="org.hibernate.jpa.HibernatePersistenceProvider"/>
- jpaContainer-2.1 기능을 사용하는 경우 서버 구성에 bells-1.0 기능을
구성하고 공유 라이브러리에 대한 bellhr을 추가하십시오.
공유 라이브러리는 JPA 제공자 클래스를 자동으로 찾으며, 이를 기본 JPA 지속성 제공자로 만듭니다.
이 구성은 JPA 요소에서 구성된 defaultPersistenceProvider 속성을 대체합니다.
<featureManager>
<feature>jpaContainer-2.1</feature>
<feature>bells-1.0</feature>
...
</featureManager>
<bell libraryRef="eclipselink"/>
- persistence.xml 파일에서 JPA 지속성 제공자 클래스를 지정하십시오.
이 클래스는 지속성 단위에 대한 server.xml 구성(<jpa>
요소 또는 <bell> 요소)보다
우선순위가 높습니다.
<persistence-unit name="MY_PERSISTENCE_UNIT">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
...
</persistence-unit>