Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Vorwort
1 Neues in Java 7
2 Threads und nebenläufige Programmierung
3 Datenstrukturen und Algorithmen
4 Raum und Zeit
5 Dateien, Verzeichnisse und Dateizugriffe
6 Datenströme
7 Die eXtensible Markup Language (XML)
8 Dateiformate
9 Grafische Oberflächen mit Swing
10 Grafikprogrammierung
11 Netzwerkprogrammierung
12 Verteilte Programmierung mit RMI
13 RESTful und SOAP Web-Services
14 JavaServer Pages und Servlets
15 Applets
16 Datenbankmanagement mit JDBC
17 Technologien für die Infrastruktur
18 Reflection und Annotationen
19 Dynamische Übersetzung und Skriptsprachen
20 Logging und Monitoring
21 Java Native Interface (JNI)
22 Sicherheitskonzepte
23 Dienstprogramme für die Java-Umgebung
Stichwort

Buch bestellen
Ihre Meinung?

Spacer
Java 7 - Mehr als eine Insel von Christian Ullenboom
Das Handbuch zu den Java SE-Bibliotheken
Buch: Java 7 - Mehr als eine Insel

Java 7 - Mehr als eine Insel
Rheinwerk Computing
1433 S., 2012, geb.
49,90 Euro, ISBN 978-3-8362-1507-7
Pfeil 16 Datenbankmanagement mit JDBC
Pfeil 16.1 Relationale Datenbanken
Pfeil 16.1.1 Das relationale Modell
Pfeil 16.2 Datenbanken und Tools
Pfeil 16.2.1 HSQLDB
Pfeil 16.2.2 Weitere Datenbanken *
Pfeil 16.2.3 Eclipse-Plugins zum Durchschauen von Datenbanken
Pfeil 16.3 JDBC und Datenbanktreiber
Pfeil 16.3.1 Treibertypen *
Pfeil 16.3.2 JDBC-Versionen *
Pfeil 16.4 Eine Beispielabfrage
Pfeil 16.4.1 Schritte zur Datenbankabfrage
Pfeil 16.4.2 Ein Client für die HSQLDB-Datenbank
Pfeil 16.4.3 Datenbankbrowser und eine Beispielabfrage unter NetBeans
Pfeil 16.5 Mit Java an eine Datenbank andocken
Pfeil 16.5.1 Der Treiber-Manager *
Pfeil 16.5.2 Den Treiber laden
Pfeil 16.5.3 Eine Aufzählung aller Treiber *
Pfeil 16.5.4 Log-Informationen *
Pfeil 16.5.5 Verbindung zur Datenbank auf- und abbauen
Pfeil 16.6 Datenbankabfragen
Pfeil 16.6.1 Abfragen über das Statement-Objekt
Pfeil 16.6.2 Ergebnisse einer Abfrage in ResultSet
Pfeil 16.6.3 Java und SQL-Datentypen
Pfeil 16.6.4 Date, Time und Timestamp
Pfeil 16.6.5 Unicode in der Spalte korrekt auslesen
Pfeil 16.6.6 Eine SQL-NULL und wasNull() bei ResultSet
Pfeil 16.6.7 Wie viele Zeilen hat ein ResultSet? *
Pfeil 16.7 Elemente einer Datenbank hinzufügen und aktualisieren
Pfeil 16.7.1 Batch-Updates
Pfeil 16.7.2 Die Ausnahmen bei JDBC, SQLException und Unterklassen
Pfeil 16.8 ResultSet und RowSet *
Pfeil 16.8.1 Die Schnittstelle RowSet
Pfeil 16.8.2 Implementierungen von RowSet
Pfeil 16.8.3 Der Typ CachedRowSet
Pfeil 16.8.4 Der Typ WebRowSet
Pfeil 16.9 Vorbereitete Anweisungen (Prepared Statements)
Pfeil 16.9.1 PreparedStatement-Objekte vorbereiten
Pfeil 16.9.2 Werte für die Platzhalter eines PreparedStatement
Pfeil 16.10 Transaktionen
Pfeil 16.11 Metadaten *
Pfeil 16.11.1 Metadaten über die Tabelle
Pfeil 16.11.2 Informationen über die Datenbank
Pfeil 16.12 Vorbereitete Datenbankverbindungen
Pfeil 16.12.1 DataSource
Pfeil 16.12.2 Gepoolte Verbindungen
Pfeil 16.13 JPA-Beispiel mit der NetBeans-IDE
Pfeil 16.13.1 Entity-Beans generieren
Pfeil 16.13.2 Die Quellen im Überblick
Pfeil 16.13.3 Persistence Unit
Pfeil 16.13.4 Ein JPA-Beispielprogramm
Pfeil 16.14 Zum Weiterlesen

Rheinwerk Computing - Zum Seitenanfang

16.13 JPA-Beispiel mit der NetBeans-IDEZur nächsten Überschrift

JPA (Java Persistence API) ist ein Standard für objekt-relationales Mapping. Ohne zu detailliert in diesen Java EE-Standard einzusteigen, soll ein kleines Beispiel mit NetBeans zeigen, wie einfach es sein kann, Tabellenzeilen auf Objekte zu übertragen.

Der Ausgangspunkt für dieses Beispiel ist die Beispieldatenbank, die wir schon in Abschnitt 16.4.3, »Datenbankbrowser und eine Beispielabfrage unter NetBeans«, genutzt haben. Genau für diese Beispieldatenbank wollen wir Objekte generieren lassen, die die Dateninformationen repräsentieren. Die Objekte, die Tabellenzeilen repräsentieren, heißen Entity-Beans. Sie können von Hand aufgebaut, oder – diesen Weg gehen wir – automatisch aus der Datenbank generiert werden.


Rheinwerk Computing - Zum Seitenanfang

16.13.1 Entity-Beans generierenZur nächsten ÜberschriftZur vorigen Überschrift

Ein Projekt mit JDBC-Datenbankzugriff und dem JDBC-Treiber soll eingerichtet sein. Wähle dann FileNew File...Persistence und in der Box Entity Class from Database (siehe Abbildung 16.19).

Wähle Next, und im nächsten Dialog wähle bei der Database Connection die Beispieldatenbank aus (siehe dazu Abschnitt 16.4.3, »Datenbankbrowser und eine Beispielabfrage unter NetBeans«). In der linken Spalte erscheinen die Tabellen. Wählen wir Add All >>, um für alle Tabellen Entity-Beans zu generieren (siehe Abbildung 16.20).

Abbildung

Abbildung 16.19: NetBeans-Dialog zum Anlegen neuer Entity-Klassen

Abbildung

Abbildung 16.20: Tabellen für den Quellcode-Generator hinzufügen

Nach Next erscheint ein neuer Dialog. Einstellungen sind nur beim Paket nötig. Ich wähle com.tutego.insel.jpa:

Abbildung

Abbildung 16.21: Wählen des Paketnamens und Abschluss des Dialogs

Danach ist ein Finish fällig.


Rheinwerk Computing - Zum Seitenanfang

16.13.2 Die Quellen im ÜberblickZur nächsten ÜberschriftZur vorigen Überschrift

Der Generator hat eine ganze Reihe von Dateien generiert und Eintragungen gemacht:

  • Neue Java-Archive stehen im Klassenpfad. Sie enthalten die JPA-Annotationen und den JPA-Provider EclipseLink (die Referenzimplementierung für JPA).
  • Die Entity-Bean-Klassen wurden generiert – ihr Name stammt vom Tabellennamen.
  • Ein META-INF-Verzeichnis führt die Datei persistence.xml auf.

Abbildung

Abbildung 16.22: Generierte Dateien

Die Customer-Klasse repräsentiert die CUSTOMER-Tabelle. Ein Ausschnitt aus der Datei sieht so aus:

@Entity
@Table(name = "CUSTOMER")
@NamedQueries({
@NamedQuery(name = "Customer.findAll", query = "SELECT c FROM Customer c"),
@NamedQuery(name = "Customer.findByCustomerId", query = "SELECT c FROM Customer c Zeilenumbruch
WHERE c.customerId = :customerId"),
...
@NamedQuery(name = "Customer.findByCreditLimit", query = "SELECT c FROM Customer c Zeilenumbruch
WHERE c.creditLimit = :creditLimit")})
public class Customer implements Serializable
{
private static final long serialVersionUID = 1L;

@Id
@Basic(optional = false)
@Column(name = "CUSTOMER_ID")
private Integer customerId;

@Basic(optional = false)
@Column(name = "ZIP")
private String zip;
...
public Customer() {
}

...

public Integer getCustomerId() {
return customerId;
}

public void setCustomerId(Integer customerId) {
this.customerId = customerId;
}

public String getZip() {
return zip;
}

public void setZip(String zip) {
this.zip = zip;
}
...
}

Es lässt sich festhalten, dass es für jede Spalte in der Tabelle ein Attribut und Setter/Getter gibt. Die anderen Beans sehen im Prinzip genauso aus.


Rheinwerk Computing - Zum Seitenanfang

16.13.3 Persistence UnitZur nächsten ÜberschriftZur vorigen Überschrift

Die Datei im META-INF-Vezeichnis ist eine sogenannte PU-Datei (für Persistence Unit). Sie zählt alle Klassen auf und enthält die Zugangsdaten zur Datenbank.

Abbildung

Abbildung 16.23: Editor mit persistence.xml

Der Persistence-Unit-Name ist InselPU, und diesen Namen brauchen wir später noch.


Rheinwerk Computing - Zum Seitenanfang

16.13.4 Ein JPA-BeispielprogrammZur vorigen Überschrift

Der NetBeans-Editor hat extra einen eigenen Menüpunkt für JPA, sodass es einfach ist, ein kleines Beispiel aufzubauen. Beginnen wir mit einer Standard-Klasse. (Das geht in NetBeans über FileNew File...JavaJava Class.) Nennen wir die Klasse JpaDemo.

Daraufhin öffnet sich der Editor mit der neuen Klasse.

import com.tutego.insel.jpa.Customer;
import com.tutego.insel.jpa.DiscountCode;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

public class JpaDemo
{
public static void main( String[] args )
{
EntityManagerFactory emf = Persistence.createEntityManagerFactory( "InselPU" );
EntityManager em = emf.createEntityManager();
try
{
DiscountCode discountCode = em.find( DiscountCode.class, 'H' );
Customer customer1 = new Customer( 888 );
customer1.setName( "Chris" );
customer1.setZip( "999" );
customer1.setDiscountCode( discountCode );
em.getTransaction().begin();
em.persist( customer1 );
em.getTransaction().commit();

String query = "SELECT c FROM Customer c";
for ( Customer c : em.createQuery( query, Customer.class ).getResultList() )
System.out.println( c.getName() );
}
catch ( Exception e )
{
e.printStackTrace();
em.getTransaction().rollback();
}
finally
{
em.close();
}
}
}

Das Programm besorgt sich Zugang zum OR-Mapper – vereinfacht gesagt repräsentiert als EntityManager-Objekt. Der EntityManager bietet Methoden wie persist() zum Speichern oder find() zum Suchen. Der erste JPA-Code erfragt ein DiscountCode-Objekt, was mit der ID 'H' in der Datenbank steckt. Mit diesem Discount-Code legen wir einen neuen Kunden an. Anschließend geben wir alle Kunden aus, und der neue Kunde ist natürlich dabei:

JumboCom
Livermore Enterprises
Oak Computers
Nano Apple
HostProCom
CentralComp
Golden Valley Computers
Top Network Systems
West Valley Inc.
Ford Motor Co
Big Car Parts
New Media Productions
Yankee Computer Repair
Chris

Wenn es einen Fehler der Art »Exception in thread "main" javax.persistence.PersistenceException: Exception [EclipseLink-4003] (Eclipse Persistence Services – 2.2.0.v20110202-r8913): org.eclipse.persistence.exceptions.DatabaseException« gibt, dann fehlt der JDBC-Treiber für die Derby-Datenbank; Abschnitt 16.4.3 erklärt, wie er einzubinden ist.



Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.

>> Zum Feedback-Formular
<< zurück
  Zum Katalog
Zum Katalog: Java 7 – Mehr als eine Insel
Java 7 – Mehr als eine Insel
Jetzt bestellen


 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchempfehlungen
Zum Katalog: Java SE Bibliotheken






 Java SE Bibliotheken


Zum Katalog: Professionell entwickeln mit Java EE 7






 Professionell
 entwickeln mit
 Java EE 7


Zum Katalog: Java ist auch eine Insel






 Java ist auch
 eine Insel


Zum Katalog: Einstieg in Eclipse






 Einstieg in Eclipse


Zum Katalog: Einstieg in Java






 Einstieg in Java


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




Copyright © Rheinwerk Verlag GmbH 2012
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Rheinwerk Computing]

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de