2016-03-24 10 views
0

Ich habe vor kurzem Hibernate verwendet, aber diese Frage verwirrte mich. Ich habe gesehen, dass Session Factory kann mehrfach erstellt werden, wenn wir mehrere Datenquellen haben. Aber zur gleichen Zeit habe ich gelesen, dass sessionFactory implementiert singleton zu. Widerspricht das nicht?Singleton SessionFactory in Hibernate

+0

Es ist Singleton und es ist eine pro Datenquelle. Es ist Singleton Sie können eine Sessionfactory für eine Datenquelle erstellen, Sie können nicht dieselbe Instanz für andere Datenquellen verwenden (d. H. Single Instance) – Pragnani

+0

Danke @Pragnani. Aber normalerweise, wenn wir eine Klasse Singleton machen, stellen wir sicher, dass es in jedem Fall keine andere Instanz dieser Klasse gibt, aber diese Anweisung macht es Singleton bedingt. Macht das SessionFactory eine komplette Singleton-Klasse ??? – PStorer

+0

Es ist kein Singleton pro Klassenlader, aber es ist ein Singleton pro Datenquelle. – Pragnani

Antwort

-1
//use singleton hibernateUtil.java class 
package com.onlinetutorialspoint.config; 

import org.hibernate.SessionFactory; 
import org.hibernate.cfg.Configuration; 

public class HibernateUtility { 
public static SessionFactory factory; 
//to disallow creating objects by other classes. 

    private HibernateUtility() { 
    } 
//maling the Hibernate SessionFactory object as singleton 

    public static synchronized SessionFactory getSessionFactory() { 

     if (factory == null) { 
      factory = new Configuration().configure("hibernate.cfg.xml"). 
        buildSessionFactory(); 
     } 
     return factory; 
    } 
} 
Verwandte Themen