Java Persistance API mit NetBeans
Ein einfaches Programm
Voraussetzungen
- MySQL Datenbank
- NetBeans
- JDBC-Treiber für MySQL
- JPA (z.B. von EclipseLink)
Vorbereitungen
- Eine Beispieltabelle mit etwas Inhalt anlegen
CREATE TABLE IF NOT EXISTS `friend` (
`id` int(11) NOT NULL NULL AUTO_INCREMENT PRIMARY KEY,
`name` varchar(100) DEFAULT NULL
);
INSERT INTO `friend` (`id`, `name`) VALUES (1, 'Hendrik'),(2, 'Jürgen'),(3, 'Günter');
- In NetBeans eine Datenbankverbindung konfigurieren
- Dazu im linken oberen Fenster Karteireiter Services auswählen
-
Rechtsklick auf Databases -> New Connection ->
Driver -> MySQL -> Next
- Datenbank-Verbindungsdaten eintragen -> Verbindung testen -> Next
- Datenbank-Verbindung einen Namen geben -> Finish
Das Programm schreiben
- Neues Java-Project anlegen
- File -> New Project… -> Categories: Java -> Java Application -> Next
- Project Name: DbTest
- Create Main Class: de.erichweigand.dbtest.DbTest
- Im Projekt den Ordner Libraries anwählen -> Rechtsklick -> Add Library
- EclipseLink (JPA 2.1)
- MySQL JDBC Driver
- Eine Persistence Unit erstellen
- Projekt anwählen -> Rechtsklick -> New -> Persistence Unit
- Bei Database Connection die vorhin angelegte Verbindung auswählen
- Eine Entity-Klasse anlegen
-
Projekt anwählen -> Rechtsklick -> New -> Entity Classes from Database
-> Add All -> Next -> Finish
- Die Klasse DbTest schreiben
package de.erichweigand.dbtest;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
public class DbTest {
public static void main(String[] args) {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("DbTestPU");
EntityManager em = emf.createEntityManager();
try {
String query = "SELECT f FROM Friend f";
em.createQuery(query, Friend.class)
.getResultList()
.stream()
.forEach((f) -> {
System.out.println(f.getName());
});
} catch (Exception e) {
e.printStackTrace();
em.getTransaction().rollback();
} finally {
em.close();
}
}
}
- Über Run -> Run Project starten
-
Das Programm gibt die 3 Namen aus, die durch den SQL-INSERT oben in die Datenbank
eingegeben wurden.
CRUD
Create
Friend friend = new Friend();
friend.setName("Chris");
em.getTransaction().begin();
em.persist(friend);
em.getTransaction().commit();
Read
Friend friend = em.find(Friend.class,3);
System.out.println(friend.getName());
Update
Friend friend = em.find(Friend.class,3);
friend.setName("Michael");
em.getTransaction().begin();
em.merge(friend);
em.getTransaction().commit();
Delete
Friend friend = em.find(Friend.class,3);
em.getTransaction().begin();
em.remove(friend);
em.getTransaction().commit();