summaryrefslogtreecommitdiffstats
path: root/Master/Reference Architectures and Patterns/hjp5/html/k100288.html
diff options
context:
space:
mode:
Diffstat (limited to 'Master/Reference Architectures and Patterns/hjp5/html/k100288.html')
-rw-r--r--Master/Reference Architectures and Patterns/hjp5/html/k100288.html221
1 files changed, 221 insertions, 0 deletions
diff --git a/Master/Reference Architectures and Patterns/hjp5/html/k100288.html b/Master/Reference Architectures and Patterns/hjp5/html/k100288.html
new file mode 100644
index 0000000..07daaa4
--- /dev/null
+++ b/Master/Reference Architectures and Patterns/hjp5/html/k100288.html
@@ -0,0 +1,221 @@
+<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,k100287.html;107,k100289.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="k100287.html">&nbsp;&nbsp;&lt;&nbsp;&nbsp;</a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100289.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="sectlevel2id045001"></a>
+<h2>45.1 Einleitung </h2>
+<hr>
+<ul>
+<li><a href="k100288.html#sectlevel2id045001">45.1 Einleitung</a>
+<ul>
+<li><a href="k100288.html#sectlevel3id045001001">45.1.1 Bezug und Installation</a>
+</ul>
+</ul>
+<hr>
+
+<p>
+In <a href="k100265.html#kapiteljdbc">Kapitel 42</a> haben wir gesehen,
+wie wir mit Hilfe von Datenbank-Treibern und der Abfragesprache SQL
+Relationale Datenbanken mit Javaprogrammen verkn&uuml;pfen und Daten
+Ein- bzw. Auslesen k&ouml;nnen. Vielleicht ist Ihnen dabei aufgefallen,
+dass die serielle Art und Weise des Zugriffs auf Relationale Datenbanken
+nicht so recht mit der objektorientierten Programmierung harmonisiert.
+Man spricht in diesem Fall auch von einem <a name="ixa103331"><i>Impedance Mismatch</i></a>.
+
+<p>
+&Uuml;ber die Jahre hinweg entwickelte sich deshalb eine weitere Technik,
+die eine objektorientierte Verkn&uuml;pfung von Datenbanken und Programmiersprachen
+gestattet und unter dem Namen <a name="ixa103332"><i>Object Relational Mapping</i></a>
+(<a name="ixa103333"><i>ORM</i></a>) bekannt wurde. Zwar basiert der
+Zugriff auf die im Hintergrund arbeitende Datenbank dabei weiterhin
+auf JDBC und SQL. Nun kommt jedoch eine objektorientierte Zugriffsschicht
+dazu, mit der die Datenbank-Informationen in Javaobjekte &uuml;berf&uuml;hrt
+und dem Entwickler zur Verf&uuml;gung gestellt werden.
+<p>
+<a name="persistenceimg"></a>
+<img src="images/Persistence.gif">
+<p>
+
+<p><i>
+Abbildung 45.1: Datenbankzugriff mit JDBC und ORM</i></p>
+
+<p>
+Statt langwieriger SQL-Zugriffe und Transformation eines <font color="#000077"><tt>ResultSet</tt></font>
+in Java-Objekte, kann der Entwickler diese nun einfach direkt Laden
+oder Erzeugen und die Flie&szlig;bandarbeit dem Persistenz API &uuml;berlassen.
+<p>
+<table border=0 cellspacing=0 cellpadding=0 width=100%>
+<tr>
+<td width=1 align=left valign=top bgcolor="#FF9900"><img src="trp1_1.gif"></td>
+<td><img src="trp1_1.gif" width=1></td>
+<td width=1 align=left valign=top bgcolor="#FF9900"><img src="trp1_1.gif"></td>
+<td><img src="trp1_1.gif" width=2></td>
+<td valign=top width=1000>
+
+<p>
+Das in diesem Kapitel vorgestellte Java Persistenz API (JPA) ist seit
+dem JDK 5 Bestandteil von Java und vereinigt die Frameworks der <a name="ixa103334"><i>Java
+Data Objects</i></a> (JDO) und der <a name="ixa103335"><i>Entity Bean</i></a>s
+(EJB). W&auml;hrend erstere f&uuml;r die Java Standard Edition zugeschnitten
+waren, konnten die leistungsf&auml;higeren EJBs nur in einem J2EE
+Application Server zur Ausf&uuml;hrung gebracht werden. Die neue Technologie
+vereint nun die Vorteile beider Welten und l&auml;sst sich sowohl
+mit der Standard Edition als auch mit der Enterprise Edition verwenden.</td>
+<td><img src="trp1_1.gif" width=2></td>
+<td valign=top>
+<table border=0 cellspacing=0 cellpadding=1 width=100% bgcolor="#FF9900">
+<tr>
+<td><font color="#FFFFFF">&nbsp;JDK1.1-6.0&nbsp;</font></td>
+</tr>
+</table>
+</td>
+<td width=1 align=left valign=top bgcolor="#FF9900"><img src="trp1_1.gif"></td>
+</tr>
+</table>
+<p>
+<table border=0 cellspacing=0 cellpadding=0 width=100%>
+<tr>
+<td width=1 align=left valign=top bgcolor="#000077"><img src="trp1_1.gif"></td>
+<td><img src="trp1_1.gif" width=2></td>
+<td valign=top width=1000>
+
+<p>
+Da das Java Persistenz API gleich zwei weit entwickelte Technologien
+vereint, deren Anwendungsgebiet vor allem in gro&szlig;en und komplexen
+J2EE-Applikationen liegt, gehen die M&ouml;glichkeiten dieses Frameworks
+weit &uuml;ber die Java Standard Edition hinaus. Insofern soll dieses
+Kapitel vor allem eine neue Technologie vorstellen und den Leser anregen,
+sich m&ouml;glicherweise tiefer mit dieser zu besch&auml;ftigen. Eine
+vollst&auml;ndige Einf&uuml;hrung w&uuml;rde den Rahmen dieses Buches
+bei weitem sprengen.
+
+<p>
+Sollten Sie kein Interesse an einer weiteren Zugriffsschicht f&uuml;r
+Datenbanken haben, k&ouml;nnen Sie dieses Kapitel auch &uuml;berspringen
+und direkt zu <a href="k100292.html#kapitelnetzwerkprogrammierung">Kapitel 46</a>
+&uuml;bergehen. </td>
+<td><img src="trp1_1.gif" width=2></td>
+<td valign=top>
+<table border=0 cellspacing=0 cellpadding=1 width=100% bgcolor="#000077">
+<tr>
+<td><font color="#FFFFFF">&nbsp;Hinweis&nbsp;</font></td>
+</tr>
+</table>
+</td>
+<td width=1 align=left valign=top bgcolor="#000077"><img src="trp1_1.gif"></td>
+</tr>
+</table>
+
+
+<!-- Section -->
+<a name="sectlevel3id045001001"></a>
+<h3>45.1.1 Bezug und Installation </h3>
+
+<p>
+Das Persistenz API ist noch kein fester Bestandteil der Java Standard
+Edition, sondern kann von der Homepage <a href="http://java.sun.com/javaee/technologies/persistence.jsp">http://java.sun.com/javaee/technologies/persistence.jsp</a>
+heruntergeladen werden. &Auml;hnlich wie mit JDBC liefert Sun mit
+dem Java Persistenz API dabei zun&auml;chst nur einen Satz standardisierter
+Schnittstellen, die anschlie&szlig;end von einer Implementierung ausgef&uuml;llt
+werden m&uuml;ssen.
+
+<p>
+Zum Gl&uuml;ck gibt es eine Reihe freier OpenSource-Implementierungen.
+So etwa das in diesem Buch verwendete Hibernate-Framework, das sich
+auch auf der beiliegenden DVD findet oder von der Homepage <a href="http://www.hibernate.org">http://www.hibernate.org</a>
+heruntergeladen werden kann. &Auml;hnlich wie beim Datenbank-Treiber
+ist es hierbei wichtig, dass die Klassen der Implementierung (JAR-Dateien)
+im Classpath des Programms enthalten und damit dem Java-Programm bekannt
+sind.
+
+<p>
+Um die in diesem Kapitel vorgestellten Beispiele auszuf&uuml;hren,
+k&ouml;nnen wir einfach die auf der DVD im Ordner <font color="#660099">install/persistenz</font>
+hinterlegten JAR-Archive in den Classpath integriert werden. Sollten
+Sie das Framework stattdessen von der Homepage herunterladen, so ben&ouml;tigen
+Sie die Pakete <i>Core</i> und <i>Annotations</i> des Hibernate-Projektes.
+Die Verwendung des Classpath wird unter anderem in <a href="k100087.html#sectionclasspath">Abschnitt 13.4.1</a>
+vorgestellt.
+<p>
+<table border=0 cellspacing=0 cellpadding=0 width=100%>
+<tr>
+<td width=1 align=left valign=top bgcolor="#000077"><img src="trp1_1.gif"></td>
+<td><img src="trp1_1.gif" width=2></td>
+<td valign=top width=1000>
+
+<p>
+Genaugenommen stand das Hibernate-Framework bei der Entwicklung des
+Persistenz API sogar Pate. Viele Aspekte wurden zun&auml;chst in diesem
+Framework verwirklicht und erst im Nachhinein von Sun adaptiert. So
+k&ouml;nnte man das Hibernate-Framework sogar ohne den &#187;Aufsatz&#171;
+der Persistenz API verwenden. Oder die &#187;unter der Haube&#171;
+des JPA verwendete Implementierung einfach gegen eine andere austauschen.</td>
+<td><img src="trp1_1.gif" width=2></td>
+<td valign=top>
+<table border=0 cellspacing=0 cellpadding=1 width=100% bgcolor="#000077">
+<tr>
+<td><font color="#FFFFFF">&nbsp;Hinweis&nbsp;</font></td>
+</tr>
+</table>
+</td>
+<td width=1 align=left valign=top bgcolor="#000077"><img src="trp1_1.gif"></td>
+</tr>
+</table>
+
+<p>
+Als Datenbank soll auch in diesem Kapitel die bereits bekannte HSQLDB
+mit den Tabellen der <i>DirDB</i> dienen, die in <a href="k100268.html#dirdb">Abschnitt 42.3</a>
+beschrieben wurde. Doch anstatt die Eintr&auml;ge &uuml;ber Verzeichnisse
+und Dateien mit SQL auszulesen, werden wir uns in diesem Kapitel entsprechender
+Javaobjekte bedienen.
+<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="k100287.html">&nbsp;&nbsp;&lt;&nbsp;&nbsp;</a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100289.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>