# SessionFactory verwaltung



## casi91 (28. Nov 2011)

Servus,
hoffe ich habe kein Thema übersehen, in der das schonmal besprochen wurde.

Ich arbeite mich gerade in Java und Hibernate ein und bin absolut begeistert 
Da das erstellen der SessionFactory ein klein wenig Zeit in Anspruch nimmt, ist es ja sicher nicht Sinn und Zweck, bei jeder neuen Session eine neue SessionFactory zu erzeugen, oder etwa doch?

Wie verwaltet ihr eure SessionFactory?

Hier noch kurz mein Code, wie ich die Factory und die Session erzeuge:

```
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
session = sessionFactory.openSession();
```
(sollte aber korrekt sein oder?)


Danke schonmal für die Antworten und ich Hoffe es ist keine Dumme Frage


----------



## SlaterB (28. Nov 2011)

die SessionFactory kann sicherlich wie jedes andere Objekt mit vergleichbarer Lebenszeit behandelt werden,
wenn vorhanden und nicht Serialisibarkeit oder ähnlich komisches dagegenspricht, dann in irgendwelche Framework-Konzepte einbinden, 
Spring, Dependency Injection, in Webapplikationen ApplicationContext?

oder in einfachen Fall in einer statischen Variablen bzw. einer statischen Map, falls z.B. nach User/ Datenbank getrennt 
oder in einem Objekt einer eigenen aufwendigen Verwaltungsklasse, für die sich wiederum dieselbe Frage stellt


----------



## casi91 (17. Feb 2012)

Nur als kurze Anmerkung, bevor ich den Thread schließe.

Habe mein Programm ein wenig umgestellt (umstellen müssen) da vieles unsauber war und ich bessere strategien gelernt habe 
Habe nun eine Klasse in der meine Datenbankaktionen ausgeführt werden.
Diese Klasse habe ich als "Single" definiert.
In dieser Klasse verwalte ich nun meine SessionFactory und auch nur in dieser Klasse wird diese derzeit benutzt.

Ich denke, hoffe, meine, dass das ein guter Ansatz ist, da ich alle anderen Objekte/Ansichten von der Datenbankkommunikation ausschließe.

Für alle die hier landen sollten und nicht wissen, wie man eine Klasse als "Single" definiert
hier die Variante, wie ich es gelernt habe und nutze (weiß nicht ob es noch andere gibt):


```
public class deineKlasse {
private static deineKlasse instance = null;
private deineKlasse() {
    //dein Code
}

public static deineKlasse getInstance() {
	if (instance == null) {
		instance = new deineKlasse();
	}
	return instance;
}
}
```

und dann das Objekt nicht wie gewohnt mit "new" aufrufen, sondern mit getInstance()


hoffe ich hab gerade keine Fehler in meiner Beschreibung.
und ich schließe den Thread nun.


----------



## c_sidi90 (17. Feb 2012)

Ich habe immer eine Klasse die das ganze Verwaltet als Singleton. Dort gibts die statische SessionFactory a la getINSTANCE().


----------

