1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
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"> Titel </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100003.html"> Inhalt </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="search.html"> Suchen </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="index.html"> Index </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/index.html" onClick="this.href=getDocIndex()"> DOC </a>
<td align="right">Handbuch der Java-Programmierung, 5. Auflage
<tr bgcolor="#EEFFCC">
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100287.html"> << </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100289.html"> < </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100291.html"> > </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100292.html"> >> </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/api/index.html" onClick="this.href=getApiIndex()"> API </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ö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ö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ö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ück ü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ö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ü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ö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ß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ä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ür den Zugriff auf die Persistenzschicht zu erzeugen. Hierfü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önnen wir mit seiner Hilfe nun alle lesenden und schreibenden
Operationen auf der Datenbank ausfü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ückzugeben rufen wir am Ende eines Programms die Methode <font color="#000077"><tt>close</tt></font>
auf, ganz ä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"> Warnung </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ß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ü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ü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ö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ß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ä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ürlich ü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ü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ß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ügen,
um einen neuen Datensatz in die Datenbank einzutragen. Zunächst
erzeugen wir ein Java-Objekt über einen Konstruktor und speichern
dieses anschließ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ötigen für diese Operation kein Wissen über
die im Hintergrund arbeitende Datenbank und müssen auch keinerlei
SQL-Kommandos formulieren. Wir erzeugen lediglich ein Javaobjekt und
ü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 »Deckmantel« 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öchten wir ihn nun auch wieder daraus dieser
laden können. Hierfü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ü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ß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ält
als ersten Parameter die mit der zu durchsuchenden Tabelle verknü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ünschten Datensatz, liefert er ihn
als Instanz der Klasse <font color="#000077"><tt>Directory</tt></font>
zurück, anderenfalls ist der Rückgabewert <font color="#000077"><tt>null</tt></font>.
<!-- Section -->
<a name="sectlevel3id045003005"></a>
<h3>45.3.5 Löschen eines Datensatzes </h3>
<p>
Auch das Lö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ü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ö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ß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ö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"> Titel </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100003.html"> Inhalt </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="search.html"> Suchen </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="index.html"> Index </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/index.html" onClick="this.href=getDocIndex()"> DOC </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"> << </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100289.html"> < </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100291.html"> > </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100292.html"> >> </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/api/index.html" onClick="this.href=getApiIndex()"> API </a>
<td align="right">© 1998, 2007 Guido Krüger & Thomas
Stark, <a href="http://www.javabuch.de">http://www.javabuch.de</a>
</table>
<a name="endofbody"></a>
</body>
</html>
|