SessionFactory verwaltung

casi91

Bekanntes Mitglied
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:
Java:
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 :D
 
S

SlaterB

Gast
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

Bekanntes Mitglied
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 :D
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):

Java:
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

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

Ähnliche Java Themen


Oben