<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Java User Group Münster &#187; jpa</title>
	<atom:link href="http://www.jug-muenster.de/tag/jpa/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.jug-muenster.de</link>
	<description>Java User Group für Münster und das Münsterland</description>
	<lastBuildDate>Sat, 04 Feb 2012 16:42:57 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<atom:link rel="hub" href="http://pubsubhubbub.appspot.com" />
	<atom:link rel="hub" href="http://superfeedr.com/hubbub" />
			<item>
		<title>JPA Einführung: Entity Klassen</title>
		<link>http://www.jug-muenster.de/jpa-einfuhrung-entity-klassen-833/</link>
		<comments>http://www.jug-muenster.de/jpa-einfuhrung-entity-klassen-833/#comments</comments>
		<pubDate>Thu, 04 Nov 2010 14:27:07 +0000</pubDate>
		<dc:creator>Thomas</dc:creator>
				<category><![CDATA[Contributed]]></category>
		<category><![CDATA[hibernate]]></category>
		<category><![CDATA[jpa]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.jug-muenster.de/?p=833</guid>
		<description><![CDATA[Nachdem im ersten Teil der JPA Einführung die Infrastruktur für die Arbeit mit JPA fertig gestellt wurde, kommen wir nun zu den Entitätsklassen. Bei den Entities handelt es sich um ganz normale Java Klassen (POJOs), die kein spezielles Interface implementieren oder von einer vorgegebenen Oberklasse erben müssen. Lediglich ein default Konstruktor muss vorhanden sein. Dank [...]
Weitere Artikel:<ol>
<li><a href='http://www.jug-muenster.de/jpa-tutorial-jpa-einrichtung-829/' rel='bookmark' title='JPA Tutorial: JPA Einrichtung'>JPA Tutorial: JPA Einrichtung</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<!--S-ButtonZ 1.1.5 Start--><!--S-ButtonZ 1.1.5 End--><p>Nachdem <a href="http://www.jug-muenster.de/jpa-tutorial-jpa-einrichtung-829/" target="_blank">im ersten Teil</a> der JPA Einführung die Infrastruktur für die Arbeit mit JPA fertig gestellt wurde, kommen wir nun zu den Entitätsklassen. Bei den Entities handelt es sich um ganz normale Java Klassen (POJOs), die kein spezielles Interface implementieren oder von einer vorgegebenen Oberklasse erben müssen. Lediglich ein default Konstruktor muss vorhanden sein.<br />
Dank JPA Annotationen kann man erkennen, dass die Objekte persistiert werden.<br />
Möchte man EJB3 konform arbeiten, so sollten die Annotationen dort angebracht werden, wo auf die Properties zugegriffen wird: An den Attributen für field-access, an den Getter-Methoden bei property-access. Dies sollte konsistent gemacht werden, und die beiden Formen sollten nicht gemischt werden. (Zwischen den beiden Formen wird über die Position der @Id Annotation unterschieden.)<br />
Die Annotation der Attribute hat dabei den Vorteil, dass schnell erkennbar ist, was wie persistiert wird &#8211; kann jedoch bei einigen JPA Providern zu Performance Problemen führen. Auf der anderen Seite führen Getter-Methoden, die nicht zu persistierende Werte liefern und nicht explizit von der Persistierung ausgenommen werden zu möglicherweise schwer zu findenden Programmfehlern.<span id="more-833"></span></p>
<h2>Ein Beispiel für eine einfache Entitätsklasse</h2>
<p><code> @Entity<br />
public class Person {<br />
@Id<br />
@GeneratedValue<br />
private Long id;<br />
private String vorname;<br />
private String nachname;<br />
// default constructor<br />
public Person () {<br />
}<br />
// getter + setter<br />
}</code></p>
<p>Die <em>@Entity</em> Annotation macht kenntlich, dass diese Klasse von JPA persistiert werden soll, @Id kennzeichnet den Primärschluessel und @GeneratedValue bedeutet, dass dieser automatisch generiert werden soll (also ein synthetischer Primärschlüssel).<br />
Mit diesen wenigen Angaben ist bereits erreicht, dass Objekte der Person Klasse persistiert werden können &#8211; lediglich die Konfiguration der Datenbank für JPA fehlt noch. Die genaue Steuerung in welche Tabellen/Spalten die Speicherung in der Datenbank erfolgt ist optional, und wird ohne zusätzliche Konfiguration mit Default-Werten realisiert.</p>
<h2>JPA <em>persistence.xml</em> Konfiguration</h2>
<p>In der Datei &#8220;persistence.xml&#8221; (normalerweise im META-INF Verzeichnis) befindet sich die Datenbankkonfiguration fuer den JPA Provider.<br />
Ein verkürztes Beispiel passende zu der Beispiel-Entität von oben:<br />
<code>&lt;persistence xmln="http://java.sun.com/xml/ns/persistence" ... &gt;<br />
&lt;persistence-unit name="addressbook"&gt;<br />
&lt;class&gt;com.example.domain.Person&lt;/class&gt;<br />
&lt;properties&gt;<br />
&lt;property name="hibernate.connection.driver_class" value="org.hsqldb.jdbcDriver" /&gt;<br />
...<br />
&lt;/properties&gt;<br />
&lt;/persistence-unit&gt;<br />
&lt;/persistence&gt;</code><br />
Zuerst erfolgt die Angabe des symbolischen Namens unter welchem diese Konfiguration verfügbar gemacht wird, dann folgt welche Klasse(n) zu persistieren sind (falls diese nicht per @Entity bereits deklariert sind, je nach JPA Provider reicht die @Entity Annotation nicht aus) und schließlich die Konfiguration der Datenbankverbindung ueber den JPA Provider Hibernate.<br />
Theoretisch sind verschiedene Persistence-Units möglich, ebenso kann über <em>&lt;provider&gt;</em> explizit der JPA Provider konfiguriert werden. In der Praxis findet sich jedoch für eine Anwendung in der Regel eine Persistence Unit und lediglich eine JPA Implementierung, die dann auch standardmäßig verwendet wird.<br />
Die Properties des JPA Providers sind dabei spezifisch für den jeweiligen Provider &#8211; in diesem Fall Hibernate.</p>
<h2>Objekt mittels JPA speichern</h2>
<p>Nun fehlt nur noch, dass ein Entity Object mittels JPA auch gespeichert wird. Nachdem die Vorarbeiten erledigt sind, zeigt sich schnell wie einfach die Arbeit Objekte zu speichern und zu laden dank JPA wird:<br />
<code>EntityManagerFactory emf =<br />
Persistence.createEntityManagerFactory("addressbook" ); //der symbolische Name<br />
EntityManager em = emf .createEntityManager();<br />
EntityTransaction tx = em.getTransaction();<br />
tx.begin ()<br />
Person p = new Person ();<br />
...<br />
em.persist(p);<br />
tx.commit();<br />
em.close();</code><br />
Im nächsten Teil folgt dann wie Objekte aus der Datenbank geladen, geändert und auch gelöscht werden können.</p>
<div style="clear:both;">&nbsp;</div><p>Weitere Artikel:<ol>
<li><a href='http://www.jug-muenster.de/jpa-tutorial-jpa-einrichtung-829/' rel='bookmark' title='JPA Tutorial: JPA Einrichtung'>JPA Tutorial: JPA Einrichtung</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.jug-muenster.de/jpa-einfuhrung-entity-klassen-833/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JPA Tutorial: JPA Einrichtung</title>
		<link>http://www.jug-muenster.de/jpa-tutorial-jpa-einrichtung-829/</link>
		<comments>http://www.jug-muenster.de/jpa-tutorial-jpa-einrichtung-829/#comments</comments>
		<pubDate>Sun, 31 Oct 2010 18:40:27 +0000</pubDate>
		<dc:creator>Thomas</dc:creator>
				<category><![CDATA[Contributed]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[hibernate]]></category>
		<category><![CDATA[jpa]]></category>
		<category><![CDATA[maven]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.jug-muenster.de/?p=829</guid>
		<description><![CDATA[JPA, die Java Persistence API bietet im Vergleich zu JDBC ein erhöhtes Abstraktionsniveau und ermöglicht damit in kurzer Zeit Anwendungen zu entwickeln, in denen Daten dauerhaft gespeichert werden müssen. Zum Hintergrund von JPA: Bei dem Umgang mit Datenbanken gibt es schon sehr lange JDBC (Java Database connectivity) als einheitliche API um die Verbindung zu Datenbanken [...]
Weitere Artikel:<ol>
<li><a href='http://www.jug-muenster.de/jpa-einfuhrung-entity-klassen-833/' rel='bookmark' title='JPA Einführung: Entity Klassen'>JPA Einführung: Entity Klassen</a></li>
<li><a href='http://www.jug-muenster.de/java-testing-best-practice-projekt-organisation-941/' rel='bookmark' title='Java Testing best practice: Projekt Organisation'>Java Testing best practice: Projekt Organisation</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<!--S-ButtonZ 1.1.5 Start--><!--S-ButtonZ 1.1.5 End--><p>JPA, die Java Persistence API bietet im Vergleich zu JDBC ein erhöhtes Abstraktionsniveau und ermöglicht damit in kurzer Zeit Anwendungen zu entwickeln, in denen Daten dauerhaft gespeichert werden müssen.<br />
Zum Hintergrund von JPA: Bei dem Umgang mit Datenbanken gibt es schon sehr lange JDBC (Java Database connectivity) als einheitliche API um die Verbindung zu Datenbanken herzustellen. Auch hier handelt es sich bereits um eine einheitliche Schnittstelle, jedoch wird darüber lediglich festgelegt, wie Verbindungen aufgebaut werden, wie eine Abfrage eingeleitet wird und wie Transaktionen manuell gesteuert werden können.<br />
Damit bleiben zwei Probleme: Der SQL Code muss von Hand erstellt werden, was gerade bei CRUD (Create, Update, Delete) Anwendungen viel Produktivität kostet, und zudem ist der SQL Code in der Regel herstellerabhängig. Ein Wechsel von Oracle zu Postgres bedeutet damit das Programm an vielen Stellen ändern zu müssen. Auch sind händisch erstellte Abfragen nicht immer optimal: Lazy loading von Entitäten, Caching Strategien und Transaktionssteuerung können sehr aufwendig werden. Dazu gesellen sich der relativ hohe Wartungsaufwand und die Gefahr von Fehlern die erst zur Laufzeit entdeckt werden.<span id="more-829"></span>Das Beispielprojekt wird ein einfaches Adressbuch, dabei werden Personen und ihre zugehörigen Adressen gespeichert. Im ersten Teil beschäftigen wir uns damit die Projektstruktur einzurichten, und die nötigen Bibliotheken zu installieren.</p>
<h2>Dependencies</h2>
<p>JPA selber ist lediglich eine API &#8211; diese wird durch einen sogenannten JPA Provider implementiert. Hibernate, OpenJPA und EclipseLink (bzw. Oracle Toplink) sind Beispiele fuer JPA Provider, die als OpenSource zur Verfuegung stehen und auch kommerziell verwendet werden koennen.<br />
Am einfachsten lassen sich diese Abhaengigkeiten durch Maven erfuellen, Maven kuemmert sich dabei um Download der direkten und indirekten (transistiven) Dependencies. Fuer diejenigen, die bereits Maven Erfahrung haben und Maven mit JPA nutzen moechten, hier ein Beispiel (weiter unten findet sich ein fertiges Eclipse Projekt ohne Maven zum Download) fuer Hibernate als JPA Provider (und SLF4J zum Loggen):<br />
<code>&lt;dependencies&gt;<br />
&lt;dependency&gt;<br />
&lt;groupId&gt;org.hibernate&lt;/groupId&gt;<br />
&lt;artifactId&gt;hibernate-core&lt;/artifactId&gt;<br />
&lt;version&gt;3.3.2.GA&lt;/version&gt;<br />
&lt;/dependency&gt;<br />
&lt;dependency&gt;<br />
&lt;groupId&gt;org.hibernate&lt;/groupId&gt;<br />
&lt;artifactId&gt;hibernate-annotations&lt;/artifactId&gt;<br />
&lt;version&gt;3.4.0.GA&lt;/version&gt;<br />
&lt;/dependency&gt;<br />
&lt;dependency&gt;<br />
&lt;groupId&gt;org.hibernate&lt;/groupId&gt;<br />
&lt;artifactId&gt;hibernate-entitymanager&lt;/artifactId&gt;<br />
&lt;version&gt;3.4.0.GA&lt;/version&gt;<br />
&lt;/dependency&gt;<br />
&lt;dependency&gt;<br />
&lt;groupId&gt;org.hibernate&lt;/groupId&gt;<br />
&lt;artifactId&gt;hibernate-c3p0&lt;/artifactId&gt;<br />
&lt;version&gt;3.3.2.GA&lt;/version&gt;<br />
&lt;/dependency&gt;<br />
&lt;dependency&gt;<br />
&lt;groupId&gt;org.hibernate&lt;/groupId&gt;<br />
&lt;artifactId&gt;hibernate-ehcache&lt;/artifactId&gt;<br />
&lt;version&gt;3.3.2.GA&lt;/version&gt;<br />
&lt;/dependency&gt;<br />
&lt;dependency&gt;<br />
&lt;groupId&gt;org.slf4j&lt;/groupId&gt;<br />
&lt;artifactId&gt;slf4j-simple&lt;/artifactId&gt;<br />
&lt;version&gt;1.5.8&lt;/version&gt;<br />
&lt;/dependency&gt;<br />
&lt;dependency&gt;<br />
&lt;groupId&gt;org.hsqldb&lt;/groupId&gt;<br />
&lt;artifactId&gt;hsqldb&lt;/artifactId&gt;<br />
&lt;version&gt;1.8.0.10&lt;/version&gt;<br />
&lt;/dependency&gt;<br />
&lt;/dependencies&gt;</code></p>
<h2>Manuelle Einrichtung</h2>
<p>Hier eine Liste der nötigen Bibliotheken, für diejenigen, die von Hand (beinhaltet alle transitiven Abhängigkeiten) das Projekt konfigurieren möchten:</p>
<ul>
<li>antlr-2.7.6.jar</li>
<li>c3p0-0.9.1.jar</li>
<li>commons-collections-3.1.jar</li>
<li>commons-logging-1.0.4.jar</li>
<li>dom4j-1.6.1.jar</li>
<li>ehcache-1.2.3.jar</li>
<li>ejb3-persistence-1.0.2.GA.jar</li>
<li>hibernate-annotations-3.4.0.GA.jar</li>
<li>hibernate-c3p0-3.3.2.GA.jar</li>
<li>hibernate-commons-annotations-3.1.0.GA.jar</li>
<li>hibernate-core-3.3.2.GA.jar</li>
<li>hibernate-ehcache-3.3.2.GA.jar</li>
<li>hibernate-entitymanager-3.4.0.GA.jar</li>
<li>hsqldb-1.8.0.10.jar</li>
<li>javassist-3.4.GA.jar</li>
<li>jta-1.1.jar</li>
<li>slf4j-api-1.5.8.jar</li>
<li>slf4j-simple-1.5.8.jar</li>
<li>xml-apis-1.0.b2.jar</li>
</ul>
<p>Diese JAR Dateien werden in den Classpath gelegt, normalerweise in einen &#8220;lib&#8221; Ordner, und anschließend wird der Classpath entsprechend konfiguriert. (In Eclipse über Rechtsklick auf das Projekt &#8220;Properties&#8221; im Menü auswählen, dann &#8220;Java Build Path&#8221; und dort mittels &#8220;Add JARs&#8221; die entsprechenden Dateien hinzufügen.)</p>
<h2>JPA Projekt Download</h2>
<p>Der Download als fertiges Eclipse Projekt (hier: <a href="http://www.jug-muenster.de/wp-content/uploads/2010/10/jpa-tutorial.zip">Eclipse JPA Project</a>) beinhaltet die nötigen JAR Dateien im &#8220;lib&#8221; Ordner, ist bereits entsprechend konfiguriert und benötigt kein Maven oder andere externe Tools.  (Die Ordnerstruktur verwendet jedoch die Maven Verzeichnisstruktur, was jedoch keine große Umstellung bedeuten sollte.)</p>
<p>Für dies Beispiel wird hsql als Datenbank verwendet, und dabei separat gestartet. Je nach Anwendung (Desktop oder Server) würde man in der Regel eine eingebettete Datenbank (Swing/Desktop Anwendung) oder eine externe Datenbank (Java Enterprise Application) verwenden. Hsql bietet den Betrieb als Embedded- und Standalone-Datenkbank an, dabei ist die JAR Datei mit rund 700kb relativ schlank und kann somit sehr gut für dieses Tutorial eingesetzt werden.</p>
<p>Um HSQL zu konfigurieren gibt es die Datei &#8220;server.properties&#8221;, die eine Datenbank konfiguriert, die in dem Ordner &#8220;db&#8221; abgelegt wird, &#8220;addressbook&#8221; heisst und auch als &#8220;addressbook&#8221; angesprochen wird.<br />
Server properties:<code><br />
server.database.0=db/addressbook<br />
server.dbname.0=addressbook</code></p>
<p>Von der Kommandozeile startet man den HSQL Server dann aus dem Projekt Verzeichnis in dem sich der &#8220;db&#8221; Ordner, der &#8220;lib&#8221; Ordner mit der hsqldb JAR Datei  und die &#8220;server.properties&#8221; Datei befindet:<br />
<code>java -cp lib/hsqldb-1.8.0.10.jar org.hsqldb.Server</code></p>
<p>Damit ist die Vorbereitung der serverseitigen JPA Infrastruktur abgeschlossen, die nächsten Schritte beinhalten die Einrichtung von JPA Provider, Verbindung zur Datenbank und welche Java Klassen wie auf die Datenbank abgebildet werden sollen.<br />
(Zum besseren Vergleich zwischen Hibernate und JPA beinhaltet das Beispielprojekt auch die entsprechende native Hibernate Konfiguration und die Hibernate API Aufrufe in separaten Klassen. Mehr dazu in den folgenden Artikeln.)</p>
<div style="clear:both;">&nbsp;</div><p>Weitere Artikel:<ol>
<li><a href='http://www.jug-muenster.de/jpa-einfuhrung-entity-klassen-833/' rel='bookmark' title='JPA Einführung: Entity Klassen'>JPA Einführung: Entity Klassen</a></li>
<li><a href='http://www.jug-muenster.de/java-testing-best-practice-projekt-organisation-941/' rel='bookmark' title='Java Testing best practice: Projekt Organisation'>Java Testing best practice: Projekt Organisation</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.jug-muenster.de/jpa-tutorial-jpa-einrichtung-829/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JPA-Tage mit Oracle Deutschland im April 2010</title>
		<link>http://www.jug-muenster.de/jpa-tage-mit-oracle-deutschland-im-april-2010-438/</link>
		<comments>http://www.jug-muenster.de/jpa-tage-mit-oracle-deutschland-im-april-2010-438/#comments</comments>
		<pubDate>Thu, 04 Mar 2010 16:01:16 +0000</pubDate>
		<dc:creator>Gerrit</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[EclipseLink]]></category>
		<category><![CDATA[jpa]]></category>
		<category><![CDATA[Oracle]]></category>

		<guid isPermaLink="false">http://www.jug-muenster.de/?p=438</guid>
		<description><![CDATA[Oracle Deutschland in Kooperation mit der buschmais GbR laden Sie zu einer kostenlosen eintägigen Veranstaltung ein, um Sie mit den zahlreichen Fähigkeiten von JPA 2.0, EclipseLink und dessen JPA-Implementierung vertraut zu machen. Außerdem möchten wir Ihnen darstellen, wie EclipseLink JPA innerhalb eines konkreten Projektes benutzt wurde, um eine JDO basierte Anwendung zu modernisieren. Termine: 20.04.2010 [...]
Weitere Artikel:<ol>
<li><a href='http://www.jug-muenster.de/wjax-2010-15-19-november-732/' rel='bookmark' title='WJAX 2010: 15.-19. November'>WJAX 2010: 15.-19. November</a></li>
<li><a href='http://www.jug-muenster.de/jax-konferenz-2010-467/' rel='bookmark' title='JAX Konferenz 2010'>JAX Konferenz 2010</a></li>
<li><a href='http://www.jug-muenster.de/software-freedom-day-2010-review-779/' rel='bookmark' title='Software Freedom Day 2010: Review'>Software Freedom Day 2010: Review</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<!--S-ButtonZ 1.1.5 Start--><!--S-ButtonZ 1.1.5 End--><p>Oracle Deutschland in Kooperation mit der buschmais GbR laden Sie zu einer kostenlosen eintägigen Veranstaltung ein, um Sie mit den zahlreichen Fähigkeiten von JPA 2.0, EclipseLink und dessen JPA-Implementierung vertraut zu machen. Außerdem möchten wir Ihnen darstellen, wie EclipseLink JPA innerhalb eines konkreten Projektes benutzt wurde, um eine JDO basierte Anwendung zu modernisieren.</p>
<p>Termine:<br />
20.04.2010 Düsseldorf<br />
21.04.2010 Frankfurt Dreieich<br />
22.04.2010 München</p>
<p>Weitere Informationen zur Agenda, Anfahrt und Anmeldung finden Sie auf der Oracle Homepage unter:</p>
<p>http://www.oracle.com/global/de/community/adf/einladung_ELJPATage.html</p>
<p>oder auf den Seiten von buschmais:</p>
<p>http://www.buschmais.de/jpatage/</p>
<div style="clear:both;">&nbsp;</div><p>Weitere Artikel:<ol>
<li><a href='http://www.jug-muenster.de/wjax-2010-15-19-november-732/' rel='bookmark' title='WJAX 2010: 15.-19. November'>WJAX 2010: 15.-19. November</a></li>
<li><a href='http://www.jug-muenster.de/jax-konferenz-2010-467/' rel='bookmark' title='JAX Konferenz 2010'>JAX Konferenz 2010</a></li>
<li><a href='http://www.jug-muenster.de/software-freedom-day-2010-review-779/' rel='bookmark' title='Software Freedom Day 2010: Review'>Software Freedom Day 2010: Review</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.jug-muenster.de/jpa-tage-mit-oracle-deutschland-im-april-2010-438/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pro JPA 2 (Book review)</title>
		<link>http://www.jug-muenster.de/pro-jpa-2-book-review-303/</link>
		<comments>http://www.jug-muenster.de/pro-jpa-2-book-review-303/#comments</comments>
		<pubDate>Fri, 08 Jan 2010 10:57:30 +0000</pubDate>
		<dc:creator>Thomas</dc:creator>
				<category><![CDATA[Review]]></category>
		<category><![CDATA[book]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[javaee]]></category>
		<category><![CDATA[javase]]></category>
		<category><![CDATA[jpa]]></category>

		<guid isPermaLink="false">http://www.jug-muenster.de/?p=303</guid>
		<description><![CDATA[Mike Keith and Merrick Schincariol authored a book which focuses on JPA 2, the Java persistence API which is now included in the Java EE 6 specification. JPA has its origins in object relational mapping tools like hibernate, JDO or TopLink. While JPA was originally created as a standard for the Java enterprise stack, it [...]
Weitere Artikel:<ol>
<li><a href='http://www.jug-muenster.de/review-einstieg-in-java-1055/' rel='bookmark' title='Review: Einstieg in Java'>Review: Einstieg in Java</a></li>
<li><a href='http://www.jug-muenster.de/software-freedom-day-2010-review-779/' rel='bookmark' title='Software Freedom Day 2010: Review'>Software Freedom Day 2010: Review</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<!--S-ButtonZ 1.1.5 Start--><!--S-ButtonZ 1.1.5 End--><p><strong>Mike Keith</strong> and <strong>Merrick Schincariol</strong> authored a book which focuses on <strong>JPA 2</strong>, the Java persistence API which is now included in the Java EE 6 specification.</p>
<p>JPA has its origins in object relational mapping tools like hibernate, JDO or TopLink. While JPA was originally created as a standard for the Java enterprise stack, it did not take much time until it was was also used in the Java SE environment. JPA is easy to use and helpful if integrated into Desktop applications whenever object relational mapping  makes sense.</p>
<p>While JPA is covered in Java EE books as well, Pro JPA 2 only focuses on JPA and provides a profound coverage of the topic, attracting all kinds of developers. The books does not require previous knowledge of JPA 1 or other object relational mapping technology. A basic understanding of database systems, SQL and JDBC is required, but the required knowledge can be achieved by using Wikipedia or any introductory article.</p>
<p>The book motivates the usage of ORM (object relational mapping) software by showing the differences to JDBC, proprietary APIs, EJBs, and JDO. After reading the first pages, you are already able to write your first JPA 2 application, getting an overview of the various parts of JPA, configuration and running the application in a Java SE environment. This is especially useful for beginners, who are able to understand how the different parts operate  and are encouraged to try out the technology.</p>
<p>The third chapter provides a short introduction to Java EE and explains the role of JPA in the context of an enterprise application with an emphasis on transaction and dependency management. The following chapters focus on the many aspects of ORM, many UML diagrams help understanding the context. Advanced topics like caching, deployment, packaging and testing are covered as well, contributing to the good overall impression of the book.</p>
<p>The last chapter helps users who need to migrate from CMP entity beans, JDBC or other ORM solutions to JPA 2 and introduces related enterprise design patterns.</p>
<p>In a nutshell, the authors manage to satisfy both the needs of novice and experienced developers with a good introduction and an in-depth coverage.<span id="more-303"></span></p>
<p>I recommend the book to everyone who is using persistent storage in his applications. Persistence mapping eases development and JPA 2 is a mature and feature-rich API for the use in production and through various types of applications.</p>
<p>At various points the authors note the differences from previous JPA standard, so users who are forced to the old specification can be aware of incompatibilities.</p>
<p>If you are considering a migration from JPA 1 to JPA 2, you might want to know what you will gain:</p>
<h2>What is new with JPA 2?</h2>
<p>The main features included in the update from JPA are:</p>
<ul>
<li>Expanded object relational mapping functionality (support for collections of embedded objects, multiple levels of embedded objects, ordered lists)</li>
<li>A criteria query API</li>
<li>combinations of access types</li>
<li>standardization of query-hints</li>
<li>standardization of additional metadata to support DDL generation</li>
<li>validation support</li>
</ul>
<p>Title: <strong>Pro JPA 2: Mastering the Java™ Persistence API</strong><br />
Authors: Mike Keith, Merrick Schincariol<br />
Amazon link: <a href="http://www.amazon.de/gp/product/1430219564?ie=UTF8&amp;tag=jugms-21&amp;linkCode=as2&amp;camp=1638&amp;creative=6742&amp;creativeASIN=1430219564">Pro JPA 2: Mastering the Java Persistence API</a><img style="border: none !important; margin: 0px !important;" src="http://www.assoc-amazon.de/e/ir?t=jugms-21&amp;l=as2&amp;o=3&amp;a=1430219564" border="0" alt="" width="1" height="1" /></p>
<div style="clear:both;">&nbsp;</div><p>Weitere Artikel:<ol>
<li><a href='http://www.jug-muenster.de/review-einstieg-in-java-1055/' rel='bookmark' title='Review: Einstieg in Java'>Review: Einstieg in Java</a></li>
<li><a href='http://www.jug-muenster.de/software-freedom-day-2010-review-779/' rel='bookmark' title='Software Freedom Day 2010: Review'>Software Freedom Day 2010: Review</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.jug-muenster.de/pro-jpa-2-book-review-303/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

