Aktueller Forschungsstand - JPA
This commit is contained in:
parent
93ffa88aa6
commit
4b8159f412
2 changed files with 36 additions and 0 deletions
|
@ -88,6 +88,42 @@ Größere Abweichung weißen häufig auf veraltete Statistiken hin.
|
||||||
|
|
||||||
\citep[60]{MüllerWehr2012}
|
\citep[60]{MüllerWehr2012}
|
||||||
|
|
||||||
|
Die JPA wird als First-Level-Cache in Java-EE-Anwendung gehandhabt.
|
||||||
|
Hierbei nehmen die Objekte einen von 4 Zuständen ein \citep[57]{MüllerWehr2012}.
|
||||||
|
Im \textbf{Transient} sind die Objekt erzeugt, aber noch noch in den Cache überführt worden.
|
||||||
|
Wenn Sie in den Cache überführt wwerden, nehmen sie den Zustand \textbf{Verwaltet} ein.
|
||||||
|
Für das löschen eines Objektes gibt es den Zustand \textbf{Gelöscht}, wodurch auch das Objekt
|
||||||
|
aus der Datenbank entfernt wird.
|
||||||
|
Als letzten Zustand gibt es noch \textbf{Losgelöst}, hierbei wird das Objekt aus dem Cache
|
||||||
|
entfernt, aber nicht aus der Datenbank.
|
||||||
|
|
||||||
|
Eine Menge von Objekten wird als \textit{Persistenzkontext}. Solange die Objkte dem Persistenzkontext
|
||||||
|
zugeordnet sind, also den Zustand Verwaltet besitzen, werden diese auf Änderungen überwucht
|
||||||
|
um diese am Abschluss mit der Datenbank zu syncronisieren. In der Literatur nennt man das
|
||||||
|
\textit{Automatic Dirty Checking} \citep[61]{MüllerWehr2012}.
|
||||||
|
|
||||||
|
In den Java-EE-Anwendungen wird der Persistenzkontext für die Anfragen vom Application-Server
|
||||||
|
bereitgestellt. Hierfür werden Application-Server wie GlassFish\textbf{!!!URL!!!} genutzt,
|
||||||
|
um die Verwendung eines Pools von Datenbankverbindungen zu definieren \citep[68]{MüllerWehr2012}.
|
||||||
|
Hiermit kann die Anzahl der Verbindung geringer gehalten werden als die Anzahl der Benutzer die
|
||||||
|
an der Anwendung arbeiten.
|
||||||
|
Zusätzlich werden die Transaktionen über Stateful Session-Bean (SFSB) gehandbabt, die automatisch
|
||||||
|
vor dem Aufruf erzeugt und danach wieder gelöscht werden. Dies hat allerdings den Nachteil,
|
||||||
|
dass der Persistenzkontext sehr groß werden kann, wenn viele Entities in den Persistenzkontext
|
||||||
|
geladen werden. Da dies häufig zu Speicher- und damit Performan-Problemen \citep[79]{MüllerWehr2012}
|
||||||
|
führt, muss hier darauf geachtet werden, nicht mehr benötigte Entities aus dem Persistenzkontext
|
||||||
|
lösen, oder den Transaktionskontext aufzuteilen \citep[172]{MüllerWehr2012}.
|
||||||
|
|
||||||
|
Zusätzlich kann hier ebenfalls noch der \textit{Second Level Cache} (L2-Cache) aktiviert werden.
|
||||||
|
Dieser Cache steht jedem Persistenzkontext zur Verfügung und kann dadurch die Anzahl der
|
||||||
|
Datenbankzugriffe deutlich reduzieren, was bei langsamen Datenbank-Anbindungen zu hohen
|
||||||
|
Performance-Gewinnen führen kann.
|
||||||
|
Engegen der Verwendung spricht, dass die Daten im Second Level Cache explizit über Änderungen
|
||||||
|
informiert werden müssen, sonst werden beim nächsten Laden wieder die alten Werte geliefert.
|
||||||
|
Ebenfalls benötigt so ein Cache einen höheren Bedarf an Arbeitsspeicher, in diesem dann die
|
||||||
|
Daten parallel zur Datenbank bereitgestellt werden.
|
||||||
|
Daher ist die Benutzung nur problemlos bei Entities, auf die meist lesend zugeriffen werden.
|
||||||
|
|
||||||
% Zum ende noch, warum wird das gemacht? => Weil Datenbank-Definition immer unterschiedlich sind, und die Optimierung an den entsprechenden
|
% Zum ende noch, warum wird das gemacht? => Weil Datenbank-Definition immer unterschiedlich sind, und die Optimierung an den entsprechenden
|
||||||
% Datenbestand angepasst werden muss
|
% Datenbestand angepasst werden muss
|
||||||
|
|
||||||
|
|
BIN
expose.pdf
BIN
expose.pdf
Binary file not shown.
Loading…
Reference in a new issue