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
- 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"/>
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 |
- 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.
- 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
- Tasknamen mit API TaskNameAccessor festlegen Diese Task veranschaulicht, wie Sie die Anwendungsprogrammierschnittstelle "TaskNameAccessor" verwenden, um den JPA-Tasknamen zur Laufzeit festzulegen.
- Tasknamen in einer JPA-Persistenzeinheit festlegen Diese Task veranschaulicht, wie Sie einen Tasknamen in einer JPA-Persistenzeinheit angeben.