트랜잭션 관리 관점에서 JPA(Java™ Persistence API)와 함께 데이터 소스를 사용하는 방법을 이해하는 것이 중요합니다. 이 섹션에서는 JPA 사양 자체의 세부 정보 또는 가장 알려진 JPA 구현인 Hibernate에 대한 세부 정보를 설명하지 않습니다. 대신 이 섹션에서는 JPA 영구 단위를 데이터 소스에 가리키는 방법을 보여줍니다.
META-INF/persistence.xml 설명자( JPA 2.1 사양 참조, 8.2.1.5 jta-data-source, non-jta-data-source)는 다음 두 가지 종류의 데이터 소스 참조를 정의합니다.
<JTA-data-source > - JTA 트랜잭션과 함께 사용할 JTA 사용 데이터 소스에 대한 JNDI 참조입니다.
<non-jta-data-source > - JTA 트랜잭션 외부에서 사용할 JTA 사용 데이터 소스에 대한 JNDI 참조입니다. 이 데이터 소스는 일반적으로 초기화 단계에서도 사용됩니다. 예를 들어, Hibernate를 자동 생성 데이터베이스 스키마로 구성하는 hibernate.hbm2ddl.auto 속성도 사용됩니다.
이 두 데이터 소스는 javax.sql.DataSource 또는 javax.sql.XADataSource 와 관련이 없습니다! 이는 JPA 애플리케이션을 개발할 때 일반적으로 잘못된 오류입니다. 두 JNDI 이름은 모두 JNDI 바인딩된 javax.sql.DataSource 서비스를 참조해야 합니다.
osgi.jndi.service.name 속성에 OSGi 서비스를 등록하면 OSGi JNDI 서비스에 바인딩 됩니다. OSGi 런타임(예: Fuse/Karaf)에서 JNDI는 이름 값 쌍으로 구성된 간단한 사전이 아닙니다. OSGi의 JNDI 이름을 사용하여 오브젝트를 참조하려면 서비스 조회 및 서비스 후크와 같은 기타 더 복잡한 OSGi 메커니즘이 포함됩니다.
다음 목록에서는 새로운 Fuse 설치에서 JNDI에 데이터 소스를 등록하는 방법을 보여줍니다.