Persistence Unit erstellen

Eine Persistence Unit ermöglicht der Web-Applikation die Verbindung zu einer bestimmten Datenbank.

Klicken Sie mit der rechten Maustaste auf den Projektnamen in der NetBeans-Registerkarte Projects, und wählen Sie New->Other... aus. Markieren Sie in der Liste Categories den Eintrag Persistence und danach in der Liste File Types den Eintrag Persistence Unit.

Der Name der Persistence Unit leitet sich konventionsgemäß aus dem Namen des Web-Projekts mit rechts angehangenem PU ab, also beispielsweise WebApplicationPU. Als Persistence Provider kann das vorgeschlagene Toplink(default) übernommen werden. Es handelt sich hierbei um eine JPA-Implementierung von Oracle. Es könnte auch Hibernate (ebenfalls eine JPA-Implementierung) ausgewählt werden.

Die korrespondierende Data Source (Datenbank), mit der die Persistence Unit Ihrer Web-Applikation eine Verbindung ermöglichen soll, wird ausgewählt. Sollte Ihre gewünschte Datenbank nicht aufgelistet sein, tragen Sie sie manuell im Feld Data Source ein. Im Beispiel ist webklausurplaner eingetragen. Alternativ tragen Sie hier natürlich den Namen Ihrer Datenbank ein.

Der Haken bei Use Java Transaction APIs bleibt gesetzt.

Verwenden Sie bitte im folgenden Bild ab NetBeans 6.9.x nicht mehr TopLink als Persistence Provider, sondern EclipseLink.

Als Table Generation Strategy wird None ausgewählt, sofern die Datenbankstruktur (Tabellen, Constraints etc.) bereits existiert. Es besteht dann keine Gefahr, diese später beim Deploy zu zerstören. Soll die Datenbankstruktur aus den Entity Classes generiert werden, wird Create ausgewählt. Beim Deploy wird dann zwar stets versucht, die Datenbankstruktur neu zu erstellen, da sie jedoch (nach dem ersten Deploy) bereits existiert, scheitern künftige CREATE TABLE- und ALTER TABLE-Kommandos. Es besteht auch hier keine Gefahr. Soll bei jedem Deploy der Web-Applikation die Datenbankstruktur wirklich neu erstellt werden, wird Drop and Create ausgewählt. Alle Tabelleninhalte werden dabei zerstört. Hier existiert echtes Gefahrenpotenzial!

Letztlich sollte die entstandene persistence.xml ungefähr so aussehen. Sie finden sie innerhalb der Projektstruktur im Zweig Configurations Files. Bitte beachten: Da Sie EclipseLink statt TopLink verwenden, sieht der Inhalt der Datei diesbezüglich natürlich anders aus:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
  <persistence-unit name="WebApplicationPU" transaction-type="JTA">
    <provider>oracle.toplink.essentials.PersistenceProvider</provider>
    <jta-data-source>jdbc/webapplication</jta-data-source>
    <exclude-unlisted-classes>false</exclude-unlisted-classes>
    <properties>
      <property name="toplink.ddl-generation" value="create-tables"/>
    </properties>
  </persistence-unit>
</persistence>

Sollte beim Starten der Anwendung später folgender Fehler erscheinen:

Error:
Caused by: javax.persistence.PersistenceException: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.0.1.v20100213-r6600): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: Error in allocating a connection. Cause: Connection could not be allocated because: Die Länge der Benutzer-ID (0) liegt außerhalb des gültigen Bereichs von 1 bis 255.

So muss die persistence.xml um folgende Zeilen erweitert werden. Der User und das Kennwort "app" müssen bei Bedarf geändert werden:

< property name="eclipselink.ddl-generation" value="create-tables"/>
< property name="eclipselink.jdbc.user" value="app"/>

< property name="eclipselink.jdbc.password" value="app"/>