WSJPA-Zugriffsart verwenden

Die JPA-Zugriffsart (Java™ Persistence API), auch JPA-Zugriffsart genannt, gibt die Isolationsstufe und die Sperrstufe an, die beim Lesen von Daten aus einer Datenquelle angewendet werden. Die Zugriffsart steuert die JDBC-Isolationsstufe und bestimmt, ob Lese-, Aktualisierungs- oder exklusive Sperren beim Abrufen von Daten angefordert werden.

Informationen zu diesem Vorgang

Für einen JPA-Persistenzprovider in einem Anwendungsserver kann die Anwendung die Isolations- und ReadLockMode-Einstellungen auf der Basis eines Tasknamens festlegen. Der Taskname bietet eine bessere Steuerung über die Anwendung dieser Eigenschaften. Die Anwendung definiert eine Gruppe von Entitätstypen und die entsprechenden Zugriffsarten für jeden in der Persistenzeinheit definierten Tasknamen.
Anmerkung: Die JPA-Zugriffsart ist eine WSJPA-Erweiterung von OpenJPA.
Einschränkung:
  • Die Zugriffsart ist zur Anwendung in der Java-EE-Umgebung verfügbar.
  • Die Zugriffsart ist nur auf Methoden der Entitätsmanagerschnittstelle anwendbar, die keine Abfragemethoden sind. Abfragen verwenden die Schnittstelle für Abfragehinweise (Query Hint), um die Werte für die Isolationsstufe und die Lesesperre zu setzen.
  • Die Zugriffsart ist nur für DB2-Datenbanken verfügbar.
  • Die Zugriffsart ist nur wirksam, wenn ein pessimistischer Sperrmanager verwendet wird. Fügen Sie der Eigenschaftenliste der Persistenzeinheit Folgendes hinzu: <property name="openjpa.LockManager" value="pessimistic"/>
Tabelle 1. Eigenschaften und Beschreibungen der Zugriffsart. In der folgenden Tabelle werden die Zugriffsarteigenschaften von Entity-Beans der Enterprise JavaBeans (EJB) Version 2.x mit den Zugriffsarteigenschaften von JPA verglichen:
Zugriffsart der Entity-Beans der WebSphere EJB Version 2.x Zugriffsart von JPA Beschreibung
optimistic Isolation: Read Committed Die Daten werden gelesen, aber es wird keine Sperre gesetzt. Für die Aktualisierung wird die Versions-ID verwendet, um die Datenintegrität zu gewährleisten. Andere Transaktionen können Daten lesen und aktualisieren.
lockManager: Optimistic
Query Hint: ReadLockMode: READ
pessimistic read Isolation: Repeatable Read Daten werden unter Verwendung gemeinsam genutzter Sperrern gelesen. Andere Transaktionen, die versuchen, Daten zu lesen, werden blockiert.
lockManager: Optimistic
Query Hint: ReadLockMode: READ
pessimistic update Isolation: Repeatable Read Daten werden unter Verwendung von Aktualisierungs- oder exklusiven Sperren abgerufen. Andere Schreiboperationen werden bis zur Festschreibung blockiert. Diese Zugriffsart kann verwendet werden, um den Aktualisierungszugriff auf Daten zu serialisieren, wenn es mehrere Ausgabeprogramme gibt.
lockManager: Pessimistic
Query Hint: ReadLockMode: WRITE
pessimistic exclusive Isolation: Serializable Daten werden unter Verwendung von Aktualisierungs- oder exklusiven Sperren abgerufen. Andere Schreiboperationen werden bis zur Festschreibung blockiert. Diese Zugriffsart kann verwendet werden, um den Aktualisierungszugriff auf Daten zu serialisieren, wenn es mehrere Ausgabeprogramme gibt.
lockManager: Pessimistic
Query Hint: ReadLockMode:WRITE
Über die folgenden Methoden wird ein Taskname in einem Transaktionskontext gesetzt:
  • Der Taskname wird automatisch im EJB-Container gesetzt, sobald eine Transaktion eine lokale WebSphere-Transaktion (EJB-unspezifische Transaktion), eine globale JTA-Transaktion in einer containergesteuerten Transaktion (CMT, Container-Managed Transaction) oder eine vom Benutzer eingeleitete globale Transaktion in einer Bean-gesteuerten Transaktion (BMT, Bean-Managed Transaction) verwendet.
  • Der Taskname wird manuell in einer Anwendung über die für JPA bereitgestellte Anwendungsprogrammierschnittstelle "TaskNameAccessor" gesetzt.

Die Verwendung von Tasknamen unterstützt die Spezifikation der Zugriffsart auf Anforderungsebene anstelle der Spezifikation in der Datei persistence.xml, die für alle Entitäten auf Anwendungsebene gilt. Häufig ist eine Abfrage in einer Methode oder Komponente enthalten, die in vielen verschiedenen Transaktionskontexten verwendet wird. Einige dieser Kontexte erfordern möglicherweise die Isolationsstufe "repeatable-read" und die Sperrart "update", aber andere Kontexte nicht.

Die Isolationsstufe und die Lesesperren können an den folgenden Stellen definiert werden:
  • In einem Anwendungsbereich in der Datei persistence.xml. Die Isolationsstufen und die Typen von Lesesperren sind Eigenschaften, die in der Datei persistence.xml angegeben werden. Sie gelten für alle Entitäten, die in der Persistenzeinheit definiert sind.
  • In einem Transaktionsbereich im Tasknamen. Transaktionsbezogene Hinweise überschreiben Werte auf Anwendungsebene.
  • In einer Abfrageinstanz über einen Abfragehinweis (Query Hint). Ein Abfragehinweis kann verwendet werden, um die Einstellungen für die Isoloationsstufe und ReadLockMode für eine bestimmte Abfrageinstanz zu überschreiben. Ein Abfragehinweis überschreibt die Isolationsstufe und die Lesesperren, die auf Anwendungs- oder Tranaktionsebene festgelegt wurden.

Vorgehensweise

  1. Tasknamen mit API TaskNameAccessor festlegen Diese Task veranschaulicht, wie Sie die Anwendungsprogrammierschnittstelle "TaskNameAccessor" verwenden, um den JPA-Tasknamen zur Laufzeit festzulegen.
  2. Tasknamen in einer JPA-Persistenzeinheit festlegen Diese Task veranschaulicht, wie Sie einen Tasknamen in einer JPA-Persistenzeinheit angeben.

Nächste Schritte

Weitere Informationen zur Zugriffsart finden Sie im Artikel zum Service für Zugriffsarten.

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_accessintentjpa
Dateiname:tejb_accessintentjpa.html