summaryrefslogtreecommitdiffstats
path: root/Master/Reference Architectures and Patterns/hjp5/html/k100290.html
diff options
context:
space:
mode:
authorSven Eisenhauer <sven@sven-eisenhauer.net>2023-11-10 15:11:48 +0100
committerSven Eisenhauer <sven@sven-eisenhauer.net>2023-11-10 15:11:48 +0100
commit33613a85afc4b1481367fbe92a17ee59c240250b (patch)
tree670b842326116b376b505ec2263878912fca97e2 /Master/Reference Architectures and Patterns/hjp5/html/k100290.html
downloadStudium-master.tar.gz
Studium-master.tar.bz2
add new repoHEADmaster
Diffstat (limited to 'Master/Reference Architectures and Patterns/hjp5/html/k100290.html')
-rw-r--r--Master/Reference Architectures and Patterns/hjp5/html/k100290.html469
1 files changed, 469 insertions, 0 deletions
diff --git a/Master/Reference Architectures and Patterns/hjp5/html/k100290.html b/Master/Reference Architectures and Patterns/hjp5/html/k100290.html
new file mode 100644
index 0000000..a965688
--- /dev/null
+++ b/Master/Reference Architectures and Patterns/hjp5/html/k100290.html
@@ -0,0 +1,469 @@
+<html>
+<head>
+<title>
+Handbuch der Java-Programmierung, 5. Auflage
+</title>
+</head>
+<body>
+<a name="startofbody"></a>
+<script language="JavaScript" src="hjp4lib.js">
+</script>
+<script language="JavaScript">
+installKbdHandler("97,#startofbody;101,#endofbody;116,cover.html;122,k100003.html;115,search.html;105,index.html;100,JDKDOCS;112,APIDOCS;104,k100287.html;106,k100289.html;107,k100291.html;108,k100292.html");
+</script>
+<table border=0 cellpadding=0 cellspacing=1 width="100%">
+<tr bgcolor="#EEFFCC">
+<td width="7%" align=center bgcolor="#DDCC99"><a href="cover.html">&nbsp;Titel&nbsp;</a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100003.html">&nbsp;Inhalt&nbsp;</a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="search.html">&nbsp;Suchen&nbsp;</a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="index.html">&nbsp;Index&nbsp;</a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/index.html" onClick="this.href=getDocIndex()">&nbsp;DOC&nbsp;</a>
+<td align="right">Handbuch der Java-Programmierung, 5. Auflage
+<tr bgcolor="#EEFFCC">
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100287.html">&nbsp;&lt;&lt;&nbsp;</a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100289.html">&nbsp;&nbsp;&lt;&nbsp;&nbsp;</a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100291.html">&nbsp;&nbsp;&gt;&nbsp;&nbsp;</a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100292.html">&nbsp;&gt;&gt;&nbsp;</a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/api/index.html" onClick="this.href=getApiIndex()">&nbsp;API&nbsp;</a>
+<td align="right">Kapitel 45 - Objektorientierte Persistenz
+</table>
+<hr>
+
+
+<!-- Section -->
+<a name="sectlevel2id045003"></a>
+<h2>45.3 Verwendung des Java Persistenz API </h2>
+<hr>
+<ul>
+<li><a href="k100290.html#sectlevel2id045003">45.3 Verwendung des Java Persistenz API</a>
+<ul>
+<li><a href="k100290.html#sectlevel3id045003001">45.3.1 Der EntityManager</a>
+<li><a href="k100290.html#sectlevel3id045003002">45.3.2 Transaktionen mit dem EntityManager</a>
+<li><a href="k100290.html#sectlevel3id045003003">45.3.3 Anlegen eines neuen Datensatzes</a>
+<li><a href="k100290.html#sectlevel3id045003004">45.3.4 Laden eines Datensatzes</a>
+<li><a href="k100290.html#sectlevel3id045003005">45.3.5 L&ouml;schen eines Datensatzes</a>
+</ul>
+</ul>
+<hr>
+
+<p>
+Nachdem die Javaklasse <font color="#000077"><tt>Directory</tt></font>
+geschrieben und mit Metainformationen ausgestattet ist und der Zugang
+zur Datenbank mit Hilfe des Persistenz Descriptors konfiguriert ist,
+k&ouml;nnen wir nun mit der Klasse arbeiten.
+
+<!-- Section -->
+
+<a name="sectlevel3id045003001"></a>
+<h3>45.3.1 Der EntityManager</h3>
+
+<p>
+Von diesem Moment an k&ouml;nnen wir die im Hintergrund arbeitende
+Datenbank im Grunde vergessen und uns ganz auf die Arbeit mit Javaobjekten
+konzentrieren. Die Transformation der Javaoperationen auf ihre SQL-Pendants
+und zur&uuml;ck &uuml;bernimmt die Persistenzschicht, auf die Sie
+mit Hilfe des <a href="index_e.html#ixb102481"><font color=#000080><tt>EntityManager</tt></font></a>
+zugreifen k&ouml;nnen. Das folgende Listing demonstriert den Zugriff
+darauf:.
+<a name="zugriffentitymanager"></a>
+
+<p>
+<table border=0 cellspacing=0 cellpadding=0 width=100% bgcolor="#DDDDDD">
+<tr>
+<td valign=top>
+<font color="#000055">
+<pre>
+<font color="#555555">001 </font><font color="#00AA00">/* Listing4504.java */</font>
+<font color="#555555">002 </font>
+<font color="#555555">003 </font><font color="#0000AA">import</font> javax.persistence.*;
+<font color="#555555">004 </font>
+<font color="#555555">005 </font><font color="#0000AA">public</font> <font color="#0000AA">class</font> Listing4504
+<font color="#555555">006 </font>{
+<font color="#555555">007 </font> <font color="#0000AA">public</font> <font color="#0000AA">static</font> <font color="#006699">void</font> main(String[] args)
+<font color="#555555">008 </font> {
+<font color="#555555">009 </font> <font color="#00AA00">//Erzeugen einer EntityManagerFactory mit Hilfe des symbolischen</font>
+<font color="#555555">010 </font> <font color="#00AA00">//Namens aus dem Persistenz Descriptor (persistence.xml)</font>
+<font color="#555555">011 </font> EntityManagerFactory emf =
+<font color="#555555">012 </font> Persistence.createEntityManagerFactory(<font color="#0000FF">"persistenceExample"</font>); <a name="zugriffentitymanager.a"></a>
+<font color="#555555">013 </font>
+<font color="#555555">014 </font> <font color="#00AA00">//Erzeugen eines EntityManagers f&uuml;r den Zugriff auf</font>
+<font color="#555555">015 </font> <font color="#00AA00">//die Datenbank</font>
+<font color="#555555">016 </font> EntityManager manager = emf.createEntityManager();
+<font color="#555555">017 </font>
+<font color="#555555">018 </font> <font color="#00AA00">//An dieser Stelle k&ouml;nnen Sie mit Hilfe des EntityManagers auf</font>
+<font color="#555555">019 </font> <font color="#00AA00">//die Datenbank zugreifen</font>
+<font color="#555555">020 </font>
+<font color="#555555">021 </font> <font color="#00AA00">//Freigabe der Ressourcen des EntityManagers</font>
+<font color="#555555">022 </font> manager.close();
+<font color="#555555">023 </font>
+<font color="#555555">024 </font> <font color="#00AA00">//Schlie&szlig;en der EntityManagerFactory und Freigeben der</font>
+<font color="#555555">025 </font> <font color="#00AA00">//belegten Ressourcen</font>
+<font color="#555555">026 </font> emf.close();
+<font color="#555555">027 </font> }
+<font color="#555555">028 </font>}</pre>
+</font>
+</td>
+<td valign=top align=right>
+<a href="../examples/Listing4504.java"><font color="#000055" size=-1>Listing4504.java</font></a></td>
+</tr>
+</table>
+<i>
+Listing 45.4: Zugriff auf den EntityManager</i></p>
+
+<p>
+Zun&auml;chst erzeugen wir eine <a href="index_e.html#ixb102482"><font color=#000080><tt>EntityManagerFactory</tt></font></a>,
+die dazu verwendet wird, einen <a href="index_e.html#ixb102481"><font color=#000080><tt>EntityManager</tt></font></a>
+f&uuml;r den Zugriff auf die Persistenzschicht zu erzeugen. Hierf&uuml;r
+verwenden wir in <a href="k100290.html#zugriffentitymanager.a">Zeile 012</a>
+den symbolischen Namen des Persistenz Descriptors aus <a href="k100289.html#persistence.z">Zeile 007</a>
+des <a href="k100289.html#persistence">Listing 45.3</a>.
+
+<p>
+Ist der <font color="#000077"><tt>EntityManager</tt></font> erzeugt,
+k&ouml;nnen wir mit seiner Hilfe nun alle lesenden und schreibenden
+Operationen auf der Datenbank ausf&uuml;hren.
+<p>
+<table border=0 cellspacing=0 cellpadding=0 width=100%>
+<tr>
+<td width=1 align=left valign=top bgcolor="#CC0000"><img src="trp1_1.gif"></td>
+<td><img src="trp1_1.gif" width=1></td>
+<td width=1 align=left valign=top bgcolor="#CC0000"><img src="trp1_1.gif"></td>
+<td><img src="trp1_1.gif" width=2></td>
+<td valign=top width=1000>
+
+<p>
+Der <a href="index_e.html#ixb102481"><font color=#000080><tt>EntityManager</tt></font></a>
+und die <a href="index_e.html#ixb102482"><font color=#000080><tt>EntityManagerFactory</tt></font></a>
+greifen auf die Datenbank zu und belegen dabei Ressourcen. Um diese
+zur&uuml;ckzugeben rufen wir am Ende eines Programms die Methode <font color="#000077"><tt>close</tt></font>
+auf, ganz &auml;hnlich wie im JDBC-Kapitel gezeigt.</td>
+<td><img src="trp1_1.gif" width=2></td>
+<td valign=top>
+<table border=0 cellspacing=0 cellpadding=1 width=100% bgcolor="#CC0000">
+<tr>
+<td><font color="#FFFFFF">&nbsp;Warnung&nbsp;</font></td>
+</tr>
+</table>
+</td>
+<td width=1 align=left valign=top bgcolor="#CC0000"><img src="trp1_1.gif"></td>
+</tr>
+</table>
+
+
+<!-- Section -->
+<a name="sectlevel3id045003002"></a>
+<h3>45.3.2 Transaktionen mit dem EntityManager </h3>
+
+<p>
+Auch die in <a href="k100269.html#subsectiontransaktionen">Abschnitt 42.4.3</a>
+vorgestellten Datenbank-Transaktionen lassen sich mit dem <font color="#000077"><tt>EntityManager</tt></font>
+leicht realisieren. Hierzu erzeugen wir eine <a href="index_e.html#ixb102483"><font color=#000080><tt>EntityTransaction</tt></font></a>,
+starten diese mit der Methode <font color="#000077"><tt>begin</tt></font>
+und schlie&szlig;en sie mit der Methode <font color="#000077"><tt>commit</tt></font>
+ab oder setzen sie mit einem <font color="#000077"><tt>rollback</tt></font>
+zur&uuml;ck.
+<a name="persistenztransaktion"></a>
+
+<p>
+<table border=0 cellspacing=0 cellpadding=0 width=100% bgcolor="#DDDDDD">
+<tr>
+<td valign=top>
+<font color="#000055">
+<pre>
+<font color="#555555">001 </font><font color="#00AA00">/* Listing4505.java */</font>
+<font color="#555555">002 </font>
+<font color="#555555">003 </font><font color="#0000AA">import</font> javax.persistence.*;
+<font color="#555555">004 </font>
+<font color="#555555">005 </font><font color="#0000AA">public</font> <font color="#0000AA">class</font> Listing4505
+<font color="#555555">006 </font>{
+<font color="#555555">007 </font> <font color="#0000AA">public</font> <font color="#0000AA">static</font> <font color="#006699">void</font> main(String[] args)
+<font color="#555555">008 </font> {
+<font color="#555555">009 </font> <font color="#00AA00">//Erzeugen einer EntityManagerFactory mit Hilfe des symbolischen</font>
+<font color="#555555">010 </font> <font color="#00AA00">//Namens aus dem Persistenz Descriptor (persistence.xml)</font>
+<font color="#555555">011 </font> EntityManagerFactory emf =
+<font color="#555555">012 </font> Persistence.createEntityManagerFactory(<font color="#0000FF">"persistenceExample"</font>);
+<font color="#555555">013 </font>
+<font color="#555555">014 </font> <font color="#00AA00">//Erzeugen eines EntityManagers f&uuml;r den Zugriff auf</font>
+<font color="#555555">015 </font> <font color="#00AA00">//die Datenbank</font>
+<font color="#555555">016 </font> EntityManager manager = emf.createEntityManager();
+<font color="#555555">017 </font>
+<font color="#555555">018 </font> <font color="#00AA00">//Beginn einer neuen Transanktion</font>
+<font color="#555555">019 </font> EntityTransaction tx = manager.getTransaction();
+<font color="#555555">020 </font> tx.begin();
+<font color="#555555">021 </font>
+<font color="#555555">022 </font> <font color="#00AA00">//An dieser Stelle k&ouml;nnen Sie mit Hilfe des EntityManagers auf</font>
+<font color="#555555">023 </font> <font color="#00AA00">//die Datenbank zugreifen</font>
+<font color="#555555">024 </font>
+<font color="#555555">025 </font> <font color="#00AA00">//Abschluss der Transaktion mit einem Commit</font>
+<font color="#555555">026 </font> tx.commit();
+<font color="#555555">027 </font>
+<font color="#555555">028 </font> <font color="#00AA00">//Freigabe der Ressourcen des EntityManagers</font>
+<font color="#555555">029 </font> manager.close();
+<font color="#555555">030 </font>
+<font color="#555555">031 </font> <font color="#00AA00">//Schlie&szlig;en der EntityManagerFactory und Freigeben der</font>
+<font color="#555555">032 </font> <font color="#00AA00">//belegten Ressourcen</font>
+<font color="#555555">033 </font> emf.close();
+<font color="#555555">034 </font> }
+<font color="#555555">035 </font>}</pre>
+</font>
+</td>
+<td valign=top align=right>
+<a href="../examples/Listing4505.java"><font color="#000055" size=-1>Listing4505.java</font></a></td>
+</tr>
+</table>
+<i>
+Listing 45.5: Transaktionen im EntityManager</i></p>
+
+
+<!-- Section -->
+<a name="sectlevel3id045003003"></a>
+<h3>45.3.3 Anlegen eines neuen Datensatzes </h3>
+
+<p>
+Beginnen wir zun&auml;chst mit dem Anlegen eines neuen Datensatzes.
+Dies wurde in <a href="k100268.html#tabellenfuellen">Listing 42.5</a>
+im JDBC-Kapitel mit Hilfe eines <font color="#000077"><tt>INSERT</tt></font>-Statements
+realisiert. Hier verwenden wir einfach den Konstruktor der Klasse
+<font color="#000077"><tt>Directory</tt></font>, um ein neues Javaobjekt
+zu erzeugen und speichern dieses mit Hilfe des <a href="index_e.html#ixb102481"><font color=#000080><tt>EntityManager</tt></font></a>.
+Der Eintrag soll dabei den Verzeichnisnamen <font color="#000077"><tt>temp</tt></font>
+und die Id <font color="#000077"><tt>0</tt></font> bekommen, die wir
+nat&uuml;rlich &uuml;ber die Set-Methoden des Java-Objektes definieren.
+<a name="persistenzanlegendir"></a>
+
+<p>
+<table border=0 cellspacing=0 cellpadding=0 width=100% bgcolor="#DDDDDD">
+<tr>
+<td valign=top>
+<font color="#000055">
+<pre>
+<font color="#555555">001 </font><font color="#00AA00">/* Listing4506.java */</font>
+<font color="#555555">002 </font>
+<font color="#555555">003 </font><font color="#0000AA">import</font> javax.persistence.*;
+<font color="#555555">004 </font>
+<font color="#555555">005 </font><font color="#0000AA">public</font> <font color="#0000AA">class</font> Listing4506
+<font color="#555555">006 </font>{
+<font color="#555555">007 </font> <font color="#0000AA">public</font> <font color="#0000AA">static</font> <font color="#006699">void</font> main(String[] args)
+<font color="#555555">008 </font> {
+<font color="#555555">009 </font> <font color="#00AA00">//Erzeugen einer EntityManagerFactory mit Hilfe des symbolischen</font>
+<font color="#555555">010 </font> <font color="#00AA00">//Namens aus dem Persistenz Descriptor (persistence.xml)</font>
+<font color="#555555">011 </font> EntityManagerFactory emf =
+<font color="#555555">012 </font> Persistence.createEntityManagerFactory(<font color="#0000FF">"persistenceExample"</font>);
+<font color="#555555">013 </font>
+<font color="#555555">014 </font> <font color="#00AA00">//Erzeugen eines EntityManagers f&uuml;r den Zugriff auf</font>
+<font color="#555555">015 </font> <font color="#00AA00">//die Datenbank</font>
+<font color="#555555">016 </font> EntityManager manager = emf.createEntityManager();
+<font color="#555555">017 </font>
+<font color="#555555">018 </font> <font color="#00AA00">//Beginn einer neuen Transanktion</font>
+<font color="#555555">019 </font> EntityTransaction tx = manager.getTransaction();
+<font color="#555555">020 </font> tx.begin();
+<font color="#555555">021 </font>
+<font color="#555555">022 </font> <font color="#00AA00">//Erzeugen eines neuen JavaObjektes</font>
+<font color="#555555">023 </font> Directory dir = <font color="#0000AA">new</font> Directory(); <a name="persistenzanlegendir.a"></a>
+<font color="#555555">024 </font> dir.setDid(0);
+<font color="#555555">025 </font> dir.setDname(<font color="#0000FF">"temp"</font>);
+<font color="#555555">026 </font>
+<font color="#555555">027 </font> <font color="#00AA00">//Speichern des JavaObjektes mit Hilfe des EntityManagers</font>
+<font color="#555555">028 </font> manager.persist(dir); <a name="persistenzanlegendir.b"></a>
+<font color="#555555">029 </font>
+<font color="#555555">030 </font> <font color="#00AA00">//Abschluss der Transaktion mit einem Commit</font>
+<font color="#555555">031 </font> tx.commit();
+<font color="#555555">032 </font>
+<font color="#555555">033 </font> <font color="#00AA00">//Freigabe der Ressourcen des EntityManagers</font>
+<font color="#555555">034 </font> manager.close();
+<font color="#555555">035 </font>
+<font color="#555555">036 </font> <font color="#00AA00">//Schlie&szlig;en der EntityManagerFactory und Freigeben der</font>
+<font color="#555555">037 </font> <font color="#00AA00">//belegten Ressourcen</font>
+<font color="#555555">038 </font> emf.close();
+<font color="#555555">039 </font> }
+<font color="#555555">040 </font>}</pre>
+</font>
+</td>
+<td valign=top align=right>
+<a href="../examples/Listing4506.java"><font color="#000055" size=-1>Listing4506.java</font></a></td>
+</tr>
+</table>
+<i>
+Listing 45.6: Anlegen eines Datensatzes</i></p>
+
+<p>
+Die Anweisungen von <a href="k100290.html#persistenzanlegendir.a">Zeile 023</a>
+bis <a href="k100290.html#persistenzanlegendir.b">Zeile 028</a> gen&uuml;gen,
+um einen neuen Datensatz in die Datenbank einzutragen. Zun&auml;chst
+erzeugen wir ein Java-Objekt &uuml;ber einen Konstruktor und speichern
+dieses anschlie&szlig;end mit der Methode <a href="index_p.html#ixb102484"><font color=#000080><tt>persist</tt></font></a>
+des <font color="#000077"><tt>EntityManager</tt></font> in der Datenbank.
+Wir ben&ouml;tigen f&uuml;r diese Operation kein Wissen &uuml;ber
+die im Hintergrund arbeitende Datenbank und m&uuml;ssen auch keinerlei
+SQL-Kommandos formulieren. Wir erzeugen lediglich ein Javaobjekt und
+&uuml;bergeben dieses der Methode <font color="#000077"><tt>persist</tt></font>
+des Entity Managers. Der Aufbau der Datenbankverbindung und die Formulierung
+eines passenden <font color="#000077"><tt>INSERT</tt></font>-Statements
+bleiben ganz unter dem &#187;Deckmantel&#171; des Persistenz API verborgen.
+
+
+<!-- Section -->
+<a name="sectlevel3id045003004"></a>
+<h3>45.3.4 Laden eines Datensatzes </h3>
+
+<p>
+Nachdem wir den Datensatz im vorangegangenen Absatz in der Datenbank
+gespeichert haben, m&ouml;chten wir ihn nun auch wieder daraus dieser
+laden k&ouml;nnen. Hierf&uuml;r verwenden wir die Methode <font color="#000077"><tt>find</tt></font>
+des <font color="#000077"><tt>EntityManager</tt></font>:
+<a name="persistenzladendir"></a>
+
+<p>
+<table border=0 cellspacing=0 cellpadding=0 width=100% bgcolor="#DDDDDD">
+<tr>
+<td valign=top>
+<font color="#000055">
+<pre>
+<font color="#555555">001 </font><font color="#00AA00">/* Listing4507.java */</font>
+<font color="#555555">002 </font>
+<font color="#555555">003 </font><font color="#0000AA">import</font> javax.persistence.*;
+<font color="#555555">004 </font>
+<font color="#555555">005 </font><font color="#0000AA">public</font> <font color="#0000AA">class</font> Listing4507
+<font color="#555555">006 </font>{
+<font color="#555555">007 </font> <font color="#0000AA">public</font> <font color="#0000AA">static</font> <font color="#006699">void</font> main(String[] args)
+<font color="#555555">008 </font> {
+<font color="#555555">009 </font> <font color="#00AA00">//Erzeugen einer EntityManagerFactory mit Hilfe des symbolischen</font>
+<font color="#555555">010 </font> <font color="#00AA00">//Namens aus dem Persistenz Descriptor (persistence.xml)</font>
+<font color="#555555">011 </font> EntityManagerFactory emf =
+<font color="#555555">012 </font> Persistence.createEntityManagerFactory(<font color="#0000FF">"persistenceExample"</font>);
+<font color="#555555">013 </font>
+<font color="#555555">014 </font> <font color="#00AA00">//Erzeugen eines EntityManagers f&uuml;r den Zugriff auf</font>
+<font color="#555555">015 </font> <font color="#00AA00">//die Datenbank</font>
+<font color="#555555">016 </font> EntityManager manager = emf.createEntityManager();
+<font color="#555555">017 </font>
+<font color="#555555">018 </font> <font color="#00AA00">//Laden des Directory-Objektes mit der Id=0</font>
+<font color="#555555">019 </font> Directory dir = manager.find(Directory.<font color="#0000AA">class</font>, 0); <a name="persistenzladendir.a"></a>
+<font color="#555555">020 </font>
+<font color="#555555">021 </font> <font color="#00AA00">//Ausgabe des gefundenen Objektes</font>
+<font color="#555555">022 </font> System.out.println(dir);
+<font color="#555555">023 </font>
+<font color="#555555">024 </font> <font color="#00AA00">//Freigabe der Ressourcen des EntityManagers</font>
+<font color="#555555">025 </font> manager.close();
+<font color="#555555">026 </font>
+<font color="#555555">027 </font> <font color="#00AA00">//Schlie&szlig;en der EntityManagerFactory und Freigeben der</font>
+<font color="#555555">028 </font> <font color="#00AA00">//belegten Ressourcen</font>
+<font color="#555555">029 </font> emf.close();
+<font color="#555555">030 </font> }
+<font color="#555555">031 </font>}</pre>
+</font>
+</td>
+<td valign=top align=right>
+<a href="../examples/Listing4507.java"><font color="#000055" size=-1>Listing4507.java</font></a></td>
+</tr>
+</table>
+<i>
+Listing 45.7: Laden eines Datensatzes</i></p>
+
+<p>
+Statt das Javaobjekt selbst zu erzeugen verwenden wir in <a href="k100290.html#persistenzladendir.a">Zeile 019</a>
+die Methode <font color="#000077"><tt>find</tt></font> des <font color="#000077"><tt>EntityManager</tt></font>,
+um den Datensatz aus der Datenbank zu laden. Diese Methode erh&auml;lt
+als ersten Parameter die mit der zu durchsuchenden Tabelle verkn&uuml;pfte
+Klasse und als zweiten Parameter die Id des zu suchenden Datensatzes.
+Der <font color="#000077"><tt>EntityManager</tt></font> wird damit
+ein entsprechendes <font color="#000077"><tt>SELECT</tt></font>-Statement
+formulieren und versuchen, die Daten aus der Tabelle <font color="#000077"><tt>dir</tt></font>
+auszulesen. Findet er den gew&uuml;nschten Datensatz, liefert er ihn
+als Instanz der Klasse <font color="#000077"><tt>Directory</tt></font>
+zur&uuml;ck, anderenfalls ist der R&uuml;ckgabewert <font color="#000077"><tt>null</tt></font>.
+
+
+<!-- Section -->
+<a name="sectlevel3id045003005"></a>
+<h3>45.3.5 L&ouml;schen eines Datensatzes </h3>
+
+<p>
+Auch das L&ouml;schen eines Datensatzes ist mit Hilfe des Persistenz
+API kein Problem. Das demonstrieren wir, indem wir <a href="k100290.html#persistenzladendir">Listing 45.7</a>
+erweitern und den gefundenen Datensatz mit Hilfe der Methode <font color="#000077"><tt>remove</tt></font>
+der Klasse <font color="#000077"><tt>EntityManager</tt></font> aus
+der Tabelle <font color="#000077"><tt>dir</tt></font> entfernen.
+<a name="persistenzdeletedir"></a>
+
+<p>
+<table border=0 cellspacing=0 cellpadding=0 width=100% bgcolor="#DDDDDD">
+<tr>
+<td valign=top>
+<font color="#000055">
+<pre>
+<font color="#555555">001 </font><font color="#00AA00">/* Listing4508.java */</font>
+<font color="#555555">002 </font>
+<font color="#555555">003 </font><font color="#0000AA">import</font> javax.persistence.*;
+<font color="#555555">004 </font>
+<font color="#555555">005 </font><font color="#0000AA">public</font> <font color="#0000AA">class</font> Listing4508
+<font color="#555555">006 </font>{
+<font color="#555555">007 </font> <font color="#0000AA">public</font> <font color="#0000AA">static</font> <font color="#006699">void</font> main(String[] args)
+<font color="#555555">008 </font> {
+<font color="#555555">009 </font> <font color="#00AA00">//Erzeugen einer EntityManagerFactory mit Hilfe des symbolischen</font>
+<font color="#555555">010 </font> <font color="#00AA00">//Namens aus dem Persistenz Descriptor (persistence.xml)</font>
+<font color="#555555">011 </font> EntityManagerFactory emf =
+<font color="#555555">012 </font> Persistence.createEntityManagerFactory(<font color="#0000FF">"persistenceExample"</font>);
+<font color="#555555">013 </font>
+<font color="#555555">014 </font> <font color="#00AA00">//Erzeugen eines EntityManagers f&uuml;r den Zugriff auf</font>
+<font color="#555555">015 </font> <font color="#00AA00">//die Datenbank</font>
+<font color="#555555">016 </font> EntityManager manager = emf.createEntityManager();
+<font color="#555555">017 </font>
+<font color="#555555">018 </font> <font color="#00AA00">//Beginn einer neuen Transanktion</font>
+<font color="#555555">019 </font> EntityTransaction tx = manager.getTransaction();
+<font color="#555555">020 </font> tx.begin();
+<font color="#555555">021 </font>
+<font color="#555555">022 </font> <font color="#00AA00">//Laden des Directory-Objektes mit der Id=0</font>
+<font color="#555555">023 </font> Directory dir = manager.find(Directory.<font color="#0000AA">class</font>, 0);
+<font color="#555555">024 </font>
+<font color="#555555">025 </font> <font color="#0000AA">if</font>(dir != <font color="#006699">null</font>) {
+<font color="#555555">026 </font> <font color="#00AA00">//L&ouml;schen des Datensatzes aus der Datenbank</font>
+<font color="#555555">027 </font> manager.remove(dir); <a name="persistenzdeletedir.a"></a>
+<font color="#555555">028 </font> }
+<font color="#555555">029 </font>
+<font color="#555555">030 </font> <font color="#00AA00">//Abschluss der Transaktion mit einem Commit</font>
+<font color="#555555">031 </font> tx.commit();
+<font color="#555555">032 </font>
+<font color="#555555">033 </font> <font color="#00AA00">//Freigabe der Ressourcen des EntityManagers</font>
+<font color="#555555">034 </font> manager.close();
+<font color="#555555">035 </font>
+<font color="#555555">036 </font> <font color="#00AA00">//Schlie&szlig;en der EntityManagerFactory und Freigeben der</font>
+<font color="#555555">037 </font> <font color="#00AA00">//belegten Ressourcen</font>
+<font color="#555555">038 </font> emf.close();
+<font color="#555555">039 </font> }
+<font color="#555555">040 </font>}</pre>
+</font>
+</td>
+<td valign=top align=right>
+<a href="../examples/Listing4508.java"><font color="#000055" size=-1>Listing4508.java</font></a></td>
+</tr>
+</table>
+<i>
+Listing 45.8: Laden eines Datensatzes</i></p>
+
+<p>
+Durch den Aufruf der Methode <font color="#000077"><tt>remove</tt></font>
+des <font color="#000077"><tt>EntityManager</tt></font> wird ein entsprechendes
+<font color="#000077"><tt>DELETE</tt></font> erzeugt und der Eintrag
+in der Tabelle <font color="#000077"><tt>dir</tt></font> gel&ouml;scht.
+<hr>
+<table border=0 cellpadding=0 cellspacing=1 width="100%">
+<tr bgcolor="#EEFFCC">
+<td width="7%" align=center bgcolor="#DDCC99"><a href="cover.html">&nbsp;Titel&nbsp;</a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100003.html">&nbsp;Inhalt&nbsp;</a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="search.html">&nbsp;Suchen&nbsp;</a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="index.html">&nbsp;Index&nbsp;</a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/index.html" onClick="this.href=getDocIndex()">&nbsp;DOC&nbsp;</a>
+<td align="right">Handbuch der Java-Programmierung, 5. Auflage, Addison
+Wesley, Version 5.0.1
+<tr bgcolor="#EEFFCC">
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100287.html">&nbsp;&lt;&lt;&nbsp;</a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100289.html">&nbsp;&nbsp;&lt;&nbsp;&nbsp;</a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100291.html">&nbsp;&nbsp;&gt;&nbsp;&nbsp;</a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100292.html">&nbsp;&gt;&gt;&nbsp;</a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/api/index.html" onClick="this.href=getApiIndex()">&nbsp;API&nbsp;</a>
+<td align="right">&copy; 1998, 2007 Guido Kr&uuml;ger &amp; Thomas
+Stark, <a href="http://www.javabuch.de">http://www.javabuch.de</a>
+</table>
+<a name="endofbody"></a>
+</body>
+</html>