JPA-Loader konfigurieren

Ein JPA-Loader (Java Persistence API (JPA)) ist eine Plug-in-Implementierung, die JPA für die Interaktion mit der Datenbank verwendet.

Vorbereitende Schritte

Informationen zu diesem Vorgang

Weitere Informationen zur Funktionsweise von Java Persistence API (JPA) Loader finden Sie unter JPA-Loader.

Vorgehensweise

  1. Konfigurieren Sie die Parameter, die JPA erfordert, um mit einer Datenbank zu interagieren.

    Die folgenden Parameter sind erforderlich. Diese Parameter werden in der Bean JPALoader oder JPAEntityLoader und in der Bean JPATxCallback konfiguriert.

    • persistenceUnitName: Gibt den Namen der Persistenzeinheit an. Dieser Parameter wird für zwei Zwecke benötigt: zum Erstellen einer JPA-EntityManagerFactory und für das Suchen der JPA-Entitätsmetadaten in der Datei persistence.xml. Dieses Attribut wird in der Bean JPATxCallback gesetzt.
    • JPAPropertyFactory: Gibt die Factory zum Erstellen einer Map für Persistenzeigenschaften an, mit denen die Standardpersistenzeigenschaften überschrieben werden sollen. Dieses Attribut wird in der Bean JPATxCallback gesetzt. Um dieses Attribut zu setzen, ist eine Spring-Konfiguration erforderlich.
    • entityClassName: Gibt den Namen der Entitätsklasse an, die erforderlich ist, um JPA-Methoden wie EntityManager.persist, EntityManager.find usw. zu verwenden. Das Plug-in JPALoader erfordert diesen Parameter, aber der Parameter ist für JPAEntityLoader optional. Wenn der Parameter entityClassName für das Plug-in JPAEntityLoader nicht konfiguriert ist, wird die in der ObjectGrid-Entitäts-Map konfigurierte Entitätsklasse verwendet. Sie müssen für den EntityManager von eXtreme Scale und den JPA-Provider dieselbe Klasse verwenden. Dieses Attribut wird in der Bean JPALoader oder JPAEntityLoader gesetzt.
    • preloadPartition: Gibt die Partition an, bei der der Preload-Prozess für die Map gestartet wird. Wenn die Preload-Partitionsnummer kleiner als null oder größer als die Gesamtanzahl der Partitionen minus 1 ist, wird der Preload-Prozess für die Map nicht gestartet. Der Standardwert ist -1 und bedeutet, dass der Preload-Prozess standardmäßig nicht gestartet wird. Dieses Attribut wird in der Bean JPALoader oder JPAEntityLoader gesetzt.

    Neben den JPA-Parametern, die in eXtreme Scale konfiguriert werden müssen, werden JPA-Metadaten verwendet, um den Schlüssel von den JPA-Entitäten abzurufen. Die JPA-Metadaten können als Annotation oder in einer Datei orm.xml konfiguriert werden, die in der Datei persistence.xml angegeben wird. Sie sind nicht Teil der Konfiguration von eXtreme Scale.

  2. Konfigurieren Sie XML-Dateien für die JPA-Konfiguration.

    Informationen zum Konfigurieren des Plug-ins JPALoader oder JPAEntityLoader finden Sie unter Plug-ins für die Kommunikation mit Datenbanken.

    Konfigurieren Sie ein JPATxCallback-Transaktions-Callback zusammen mit der Loader-Konfiguration. Das folgende Beispiel ist eine ObjectGrid-XML-Deskriptordatei (objectgrid.xml), in der ein JPAEntityLoader und ein JPATxCallback konfiguriert sind:

    Loader mit Callback konfigurieren - XML-Beispiel
    <?xml version="1.0" encoding="UTF-8"?>
    <objectGridConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xsi:schemaLocation="http://ibm.com/ws/objectgrid/config ../objectGrid.xsd"
    	xmlns="http://ibm.com/ws/objectgrid/config">
        <objectGrids>
          <objectGrid name="JPAEM" entityMetadataXMLFile="jpaEMD.xml">
            <bean id="TransactionCallback"
               className="com.ibm.websphere.objectgrid.jpa.JPATxCallback">
               <property
                  name="persistenceUnitName" 
                  type="java.lang.String" 
                  value="employeeEMPU" />
           </bean>
           <backingMap name="Employee" pluginCollectionRef="Employee" />
        </objectGrid>
      </objectGrids>
    
      <backingMapPluginCollections>
        <backingMapPluginCollection id="Employee">
            <bean id="Loader"
              className="com.ibm.websphere.objectgrid.jpa.JPAEntityLoader">
    	      <property 
                   name="entityClassName" 
                   type="java.lang.String" 
                   value="com.ibm.ws.objectgrid.jpa.test.entity.Employee"/>
            </bean>
        </backingMapPluginCollection>
      </backingMapPluginCollections>
    </objectGridConfig>

    Wenn Sie eine JPAPropertyFactory konfigurieren möchten, müssen Sie eine Spring-Konfiguration verwenden. Im Folgenden sehen Sie eine XML-Beispielkonfigurationsdatei mit dem Namen JPAEM_spring.xml, in der eine Spring-Bean für die Konfigurationen von eXtreme Scale konfiguriert wird.

    Loader mit JPA-Eigenschaften-Factory konfigurieren - XML-Beispiel
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:aop="http://www.springframework.org/schema/aop"
           xmlns:tx="http://www.springframework.org/schema/tx"
           xmlns:objectgrid="http://www.ibm.com/schema/objectgrid"
           xsi:schemaLocation="http://www.springframework.org/schema/beans 
               			http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
    
      <objectgrid:JPAEntityLoader id="jpaLoader" 
    		entityClassName="com.ibm.ws.objectgrid.jpa.test.entity.Employee"/>
      <objectgrid:JPATxCallback id="jpaTxCallback" persistenceUnitName="employeeEMPU" />
    </beans>

    Die XML-Konfigurationsdatei Objectgrid.xml folgt. Beachten Sie, dass der ObjectGrid-Name JPAEM ist und dem ObjectGrid-Namen in der Spring-Konfigurationsdatei JPAEM_spring.xml entspricht.

    JPAEM-Loader-Konfiguration - XML-Beispiel
    <?xml version="1.0" encoding="UTF-8"?>
    <objectGridConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://ibm.com/ws/objectgrid/config ../objectGrid.xsd"
     xmlns="http://ibm.com/ws/objectgrid/config">
      <objectGrids>
        <objectGrid name="JPAEM" entityMetadataXMLFile="jpaEMD.xml">
          <bean id="TransactionCallback"
                className="{spring}jpaTxCallback"/>
            <backingMap name="Employee" pluginCollectionRef="Employee" 
                        writeBehind="T4"/>
          </objectGrid>
      </objectGrids>
        
      <backingMapPluginCollections>
        <backingMapPluginCollection id="Employee">
           <bean id="Loader" className="{spring}jpaLoader" />
        </backingMapPluginCollection>
      </backingMapPluginCollections>
    </objectGridConfig>

    Eine Entität kann mit den JPA-Annotationen und mit den EntityManager-Annotationen von eXtreme Scale annotiert werden. Jede Annotation hat ein funktional entsprechendes XML-Element, das verwendet werden kann. Deshalb wurde in eXtreme Scale der Spring-Namespace hinzugefügt. Sie können diese Annotationen auch über die Spring-Namespace-Unterstützung konfigurieren. Weitere Informationen finden Sie im Abschnitt Übersicht über das Spring-Framework.