Databases Reference
In-Depth Information
1499 [main] INFO CRUDReihen - Vor save: 0 Asterix
Der Ausgabe unseres Programms entnehmen wir auch, dass Hibernate offensicht-
lich Prepared Statements verwendet. Im ersten Durchlauf wird also
insert into Reihen (id, name) values (null, 'Asterix')
zum RDBMS geschickt. 7 Ab jetzt untersteht das Objekt reihe der Kontrolle von
Hibernate. Das RDBMS vergibt den Wert 1 für den Primärschlüssel, den Hiberna-
te anfordert und der Methode setId des Objektes reihe übergibt. Daher erhal-
ten wir die Ausgabe
1536 [main] INFO CRUDReihen - Nach save: 1 Asterix
Wenn wir das Objekt reihen jetzt ändern und wieder der Methode save über-
geben, erzeugt Hibernate keine insert -, sondern eine update -Anweisung. Wir
probieren das mal aus, indem wir in die Schleife die beiden folgenden Zeilen ein-
fügen:
reihe.setName(name+"-V2");
session.save(reihe);
log.info("Nach 2. save: "+reihe);
In der Ausgabe finden wir jetzt noch zusätzlich
1616 [main] INFO CRUDReihen - Nach 2. save: 1 Asterix-V2
und
Hibernate: update Reihen set name=? where id=?
Die
Methode save erkennt
also,
ob
sie
eine insert -
oder
eine update -
Anweisung erzeugen muss.
19.6
Daten lesen
Wenn wir aus persistierten Daten wieder Objekte machen wollen, funktioniert das
am einfachsten über den Primärschlüssel mit Hilfe der Methode get :
private void lesen(int id){
Session session = sessionFactory.openSession();
Reihen reihe = (Reihen) session.get(Reihen.class, id);
log.info("Gelesener Datensatz: "+reihe);
session.close();
}
7
Nicht ganz genau: Aufgrund der Entitätsintegrität würde die Anweisung fehlschlagen. Die Anwei-
sung, die zu H2 geht, weicht vom protokollierten insert ab.
 
Search WWH ::




Custom Search