Persistenzprovider WSJPA konfigurieren

Der WebSphere Application Server-Persistenzprovider (WSJPA) ist der Standardprovider für Java Persistence API (JPA) 2.0.

Informationen zu diesem Vorgang

Der Persistenzprovider JPA for WebSphere Application Server, WSJPA, wurde zwar auf der Grundlage des OpenJPA-Persistenzproviders von Apache erstellt, er enthält jedoch die folgenden Erweiterungen und Abweichungen:
  • Unterstützung für statisches SQL über das DB2-Feature pureQuery
  • Unterstützung für Zugriffsarten
  • Erweiterte Unterstützung für die Traceerstellung
  • Generierung von Versions-IDs
  • WebSphere-spezifische Befehle und Scripts
  • Übersetzte Nachrichtendateien
  • Überprüfen Sie speicherinterne Caches auf Viele-zu-eins-Beziehungen oder Eins-zu-eins-Beziehungen, die mit Verzögerung geladen werden. Wenn Sie die Eigenschaft "wsjpa.BrokerImpl" auf "true" setzen, legen Sie damit fest, dass die JPA-Implementierung zur Ausführungszeit versucht, Felder mit verzögerter Ladezeit zu laden, wenn die Fremdschlüsseldaten für diese Felder verfügbar sind. Verwenden Sie die folgende Eigenschaft:
    <property name="wsjpa.BrokerImpl" value="checkCacheForLazyFields=true"/> 
    Diese Eigenschaft kann in vielen Szenarien nützlich sein. Nehmen Sie beispielsweise an, Sie haben eine Personenentität, Person(A), die eine Eins-zu-eins-Beziehung zu einer anderen Person, Person(B), hat, und Person(B) ist im L2-Datencache gespeichert. Wenn die JPA-Implementierung Person(A) findet und diese Eigenschaft gesetzt ist, wird der Fremdschlüssel, der von Person(A) geladen wird, für die Beziehung zwischen Person(A) und Person(B) verwendet.
  • Der folgenden Tabelle können Sie die Unterschiede zwischen Standardwerten für die Konfigurationseigenschaften des Persistenzproviders JPA for WebSphere Application Server und Standardwerten für die Konfigurationseigenschaften des Persistenzproviders Apache OpenJPA entnehmen:
    Tabelle 1. Vergleich. Persistenzprovider JPA for WebSphere Application Server und Apache OpenJPA im Vergleich
    Eigenschaft Standardwert in Apache OpenJPA Standardwert des Persistenzproviders JPA for WebSphere Application Server
    openjpa.Compatibility StrictIdentityValues=false StrictIdentityValues=true
    openjpa.RuntimeUnenhancedClasses nicht unterstützt warn
    openjpa.DynamicEnhancementAgent true false
    open.jdbc.DriverDataSource auto simple
Fehler vermeiden Fehler vermeiden: Die Eigenschaft für die OpenJPA-Kompatibilität entfernt keine Proxy-Typen, die OpenJPA für bestimmte Datentypen generiert, insbesondere Datumstypen wie "GregorianCalendar" (gregorianischer Kalender). Diese Auslassung kann Probleme mit der Entserialisierung nach sich ziehen. Wenn ein Entserialisierungsfehler auftritt, wird eine Fehlernachricht wie die folgende ausgegeben: gotcha
Error Message is:org.codehaus.jackson.map.JsonMappingException: 
Can not construct instance of org.apache.openjpa.util.java$util$GregorianCalendar$proxy, 
problem: no suitable creator method found at 
[Source: org.apache.http.conn.EofSensorInputStream@d83fbd5; line: 1, column: 4094]

Die Verwendung des Standardpersistenzproviders JPA for WebSphere Application Server setzt nicht nur die zuvor beschriebenen Eigenschaftenüberschreibungen voraus, sondern auch die Verwendung der folgenden Klassen von JPA for WebSphere Application Server, die die entsprechenden Klassen in Apache OpenJPA überschreiben:

com.ibm.ws.persistence.jdbc.kernel.ConstraintUpdateManager;
com.ibm.ws.persistence.jdbc.kernel.WsJpaJDBCBrokerFactory;
com.ibm.ws.persistence.jdbc.sql.DB2Dictionary;
com.ibm.ws.persistence.jdbc.sql.OracleDictionary;
com.ibm.ws.persistence.jdbc.sql.SQLFactoryImpl;
com.ibm.ws.persistence.jdbc.sql.SQLServerDictionary;
com.ibm.ws.persistence.kernel.WsJpaBrokerImpl;
com.ibm.ws.persistence.kernel.WsJpaFinalizingBrokerImpl;

Wenn kein JPA-Provider im Element <provider> der Datei persistence.xml eines EJB-Moduls (Enterprise JavaBeans) konfiguriert ist, wird der JPA-Standardprovider verwendet, der momentan für diesen Server konfiguriert ist. Im Produktpaket ist der Persistenzprovider JPA for WebSphere Application Server als Standardprovider enthalten. Sie können diese Standardeinstellung jedoch überschreiben und über die Administrationskonsole einen anderen Standardprovider festlegen.

Sie können Ihren Standardpersistenzprovider auf zwei Arten definieren.

Anmerkung:

Wenn Sie einen Standardpersistenzprovider, einen JNDI-Namen für die JTA-Standarddatenquelle (Java Transaction API) und JNDI-Namenwerte für andere Standarddatenquellen haben, die vor WebSphere Application Server Version 7.0 mit JVM-Eigenschaften definiert wurden, überschreiben alle in der Administrationskonsole geänderten Werte die mit JVM-Eigenschaften definierten Werte.

Zu diesen Eigenschaften gehören com.ibm.websphere.jpa.default.provider, com.ibm.websphere.jpa.default.jta.datasource und com.ibm.websphere.jpa.default.nonjta.datasource. Die Unterstützung für diese Eigenschaften ist veraltet. Alle über diese Eigenschaften gesetzten Eigenschaften werden in dieser Anzeige als Standardwerte angezeigt. Diese über die Administrationskonsolanzeige definierten Werte überschreiben alle mithilfe von JVM-Eigenschaften definieren Werte.

Vorgehensweise


Symbol, das den Typ des Artikels anzeigt. Taskartikel



Symbol für Zeitmarke Letzte Aktualisierung: 25.05.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tejb_jpadefaultpp
Dateiname:tejb_jpadefaultpp.html