Hier einer kurze Erklaerung aus dem Stehgreif:
- SessionFactory:
Ist sozusagen 'die Fabrik' (Factory = Fabrik) in der Session produziert werden.
Dies ist ein generell haeufig verwendetes Muster (pattern) in Java:
Anstelle von
Code:
Session session = new Session();
muss eine neue Session stets von der entsprechenden 'Fabrik' geholt werden, eben der SessionFactory:
Quote:
Session session = sessionFactory.openSession(); // u.U. auch sessionFactory.currentSession();
Im Normal-fall arbeitest Du mit einem einzigen sessionFactory object, welches Du am Anfang erzeugen laesst.
- Session
Ist ein Object, das (bei Bedarf) physisch mit einer Datenbank-session verbunden ist.
Es stellt fuer den Hibernate user sozusagen die eigentliche Session dar und ist die Hauptklasse fuer den
Zugang zu persistenten Objecten. Auch das starten einer neuen Transaction erfolgt (fuer gewoehnlich) ueber
das session-object (session.beginTransaction)
Mit einer session koennen hintereinander(!) mehrere Transactionen abgewickelt werden.
Die Lebenszeit bzw. die Gueltigkeit (Scope) der Session ist somit grosser als die der Transaction.
Ausserdem gibt es in Hibernate die Moeglichkeit Daten zu lesen (read-only) ohne eine Transaction ueberhaupt zu starten
(= non-transactional queries).
- Transaction:
Im engen Sinne stellt die Transaction die kleinste 'unit of work' im Sinne der ACID-Bedinungen dar und
beinhaltet alle persistenz-relevanten Aktionen die im Zeitfenster zwischen beginTransaction und commit/rollback
stattfinden. Siehe dazu auch
http://de.wikipedia.org/wiki/ACID