다른 번들에서 JPA를 사용하여 데이터 엑세스

이 태스크 정보

다른 번들에서 JPA 지속성 단위에 액세스하려면 JPA 번들을 구성하고 WebSphere® Application Server에 데이터 소스를 추가해야 합니다. 예를 들어 JPA 엔티티를 이용하고 데이터를 표시 및 조작하는 웹 애플리케이션 번들이 이에 해당합니다.
팁:

JPA 지속성 파일이 JTA(Java™ Transaction API) 및 비JTA 데이터 소스에 대한 참조를 포함하는지 확인하십시오.

JPA에는 데이터 소스에 액세스하기 위한 두 가지 트랜잭션 패턴이 있습니다.
jta-data-source
JTA(Java Transaction API) 자원 패턴은 글로벌 트랜잭션에 따라 다릅니다. JTA 자원 패턴은 일반적으로 EJB(Enterprise JavaBeans) 세션 Facade의 범위 내에서 사용됩니다. 이 구성에서는 JPA에서 지속성 맵핑을 처리하는 동안 세션 Bean에서 트랜잭션 및 보안 컨텍스트를 제어할 수 있습니다. 이러한 경우 애플리케이션은 EntityTransaction 인터페이스를 사용하지 않지만 액세스 시 글로벌 트랜잭션에 등록된 EntityManager에 의존합니다.
non-jta-data-source
비JTA 자원 패턴은 글로벌 트랜잭션이 없을 경우 단일 자원을 처리하는 데 사용됩니다. 비JTA 자원 패턴은 일반적으로 웹 애플리케이션 또는 애플리케이션 클라이언트 범위에서 사용됩니다. 애플리케이션은 EntityTransaction 인터페이스를 사용하여 데이터 소스 관련 트랜잭션을 제어합니다.

OSGi 애플리케이션에 대한 persistence.xml 파일의 경우 jta-data-sourcenon-jta-data-source 요소는 JNDI(Java Naming and Directory Interface) 검색, 서비스 레지스트리에 대한 JNDI 검색 또는 Blueprint를 통해 데이터 소스에 액세스합니다.

JTA 및 비JTA 데이터 소스가 persistence.xml 파일에 구성되지 않은 경우 서버에 구성된 기본 JTA 및 비JTA 데이터 소스가 사용됩니다. 기본적으로 값은 null입니다. 일부 JPA 엔티티 기능에서는 비JTA 데이터 소스를 지정해야 합니다. 예를 들어 자동 엔티티 ID 생성이 이에 해당됩니다.

프로시저

  1. 엔티티 및 엔티티 제어기 패키지가 내보내기 패키지로 manifest.mf에 추가되었는지 확인하십시오.
    1. Manifest: <project_name>을 두 번 클릭하십시오. 여기서 <project_name>은 JPA 번들 프로젝트의 이름입니다. 번들 Manifest가 편집기에서 열립니다.
    2. 런타임 탭으로 전환하십시오. 엔티티 및 엔티티 제어기 패키지가 내보내기 패키지로 추가되는지 확인하십시오.
  2. persistence.xml에 비JTA 데이터 소스를 추가하십시오.
    1. 편집기에서 persistence.xml을 여십시오.
    2. 컴포넌트 목록에서 엔티티 세부사항을 표시할 엔티티를 선택하십시오.
    3. 비JTA 데이터 소스 필드에서 비데이터 소스의 글로벌 JNDI 이름을 입력하십시오. 예를 들어 다음과 같습니다. osgi:service/javax.sql.DataSource/(osgi.jndi.service.name=jdbc/blogdbnojta).
  3. getEntityManager() 메소드를 수정하십시오.

    Java EE 환경에 JPA 번들의 지속성 단위가 없으므로 getEntityManager() 메소드를 수정하여 EntityManagerFactory 서비스에 대한 JNDI 검색을 구성합니다.

    엔티티 관리자 Bean을 Blueprint 관리 Bean으로 설정하여 JNDI 검색을 구성할 수도 있습니다. 자세한 정보는 JPA 및 OSGi 애플리케이션을 참조하십시오.

    1. 편집기에서 엔티티 관리자 Bean을 여십시오.
    2. getEntityManager()를 찾아 다음과 같이 수정하십시오.
      private EntityManager getEntityManager() {
      		try {
      			emf = (EntityManagerFactory) new InitialContext().lookup("osgi:service/javax.persistence.EntityManagerFactory/(osgi.unit.name=jpaBundle)");
      		} catch (NamingException e) {
      			// TODO Auto-generated catch block
      	e.printStackTrace();
      		}
      		
      		return emf.createEntityManager();
      	}
      중요사항: 다음 코드 행에서 지속성 단위가 persistence.xml의 지속성 단위와 일치하는지 확인하십시오.
      emf = (EntityManagerFactory) new InitialContext().lookup("osgi:service/javax.persistence.EntityManagerFactory/(osgi.unit.name=jpaBundle)");
  4. InitialContextNamingException에서 생성된 오류를 수정하십시오.
    1. 마커 보기로 전환하십시오.
    2. 각 오류에 대해 오류를 마우스 오른쪽 단추로 클릭하고 QuickFix를 선택하십시오. 마법사의 지시사항에 따라 필수 패키지를 가져오십시오.
  5. WebSphere Application Server 관리 콘솔에 JDBC 제공자를 추가하십시오.
    1. 서버 보기로 전환하십시오.
    2. 서버 인스턴스를 마우스 오른쪽 단추로 클릭하고 시작을 선택하십시오.
    3. 서버 인스턴스를 마우스 오른쪽 단추로 클릭하고 관리 > 관리 콘솔 실행을 선택하여 관리 콘솔을 여십시오.
    4. 자원 > JDBC > JDBC 제공자를 클릭하십시오.
    5. JDBC 제공자 페이지에서 새로 작성을 클릭하십시오. 데이터 소스 작성 마법사가 열립니다.
    6. 마법사의 지시사항에 따라 JDBC 제공자를 작성하십시오.
    7. 변경사항을 저장하십시오.
  6. WebSphere Application Server 관리 콘솔에 데이터 소스 정의를 추가하십시오.
    1. 관리 콘솔에서 자원 > JDBC > 데이터 소스를 클릭하고 콘솔에서 데이터 소스 페이지를 여십시오.
    2. 데이터 소스 페이지에서 새로 작성을 클릭하고 persistence.xml에 지정된 JTA 연결 정의로 JNDI 이름이 설정된 데이터 소스 정의를 작성하십시오. 예를 들어 다음과 같습니다. jdbc/blogdb.
    3. 데이터 소스 페이지에서 새로 작성을 클릭하고 persistence.xml에 지정된 비JTA 연결 정의로 JNDI 이름이 설정된 다른 데이터 소스 정의를 작성하십시오. 예를 들어 다음과 같습니다. jdbc/blogdbnojta.
    4. 비JTA 연결에 대한 데이터 소스가 작성된 후에 관리 콘솔의 데이터 소스 페이지에서 비JTA 연결에 대한 정의를 클릭하십시오. 구성 페이지가 열립니다.
    5. 추가 특성 섹션에서 WebSphere Application Server 데이터 소스 특성을 클릭하십시오.
    6. 비트랜잭션 데이터 소스를 선택하십시오. 애플리케이션 서버에서 <non-jta-data-source> 요소를 사용하려면 비트랜잭션 데이터 소스에 대한 특수 구성이 필요합니다. 애플리케이션 서버에 대해 구성된 데이터 소스는 <non-jta-data-source>로 작동하지 않습니다. 애플리케이션 서버에서 구성된 모든 데이터 소스는 현재 트랜잭션 컨텍스트에 자동으로 가입되기 때문입니다. 이 자동 가입을 방지하려면 추가 데이터 소스 사용자 정의 특성 nonTransactionalDataSource=true를 추가하십시오.

결과

이제 웹 애플리케이션 번들에서 JPA 번들에 액세스하는 JPA 데이터를 표시 및 조작하고 JPA 엔티티를 이용할 수 있습니다.
주제 유형을 표시하는 아이콘 태스크 주제
Information Center의 이용 약관 | 피드백

시간소인 아이콘 마지막 업데이트 날짜: 2014-05-22

파일 이름: taccessjpaoutbundle.html