Java Hibernate中的单例会话工厂

Java Hibernate中的单例会话工厂,java,hibernate,singleton,sessionfactory,Java,Hibernate,Singleton,Sessionfactory,最近我开始使用Hibernate,但是这个问题让我很困惑。我已经看到,如果我们有多个数据源,可以多次创建会话工厂。但同时我也读到了sessionFactory也实现了singleton。这不矛盾吗???它是单例的,每个数据源一个。它是单例的,您可以为一个数据源创建一个sessionfactory,您不能将同一实例用于其他数据源(即单实例),谢谢@Pragnani。但通常,当我们将一个类设置为Singleton时,我们确保在任何情况下都不会有该类的其他实例,但该语句会有条件地将其设置为Single

最近我开始使用
Hibernate
,但是这个问题让我很困惑。我已经看到,如果我们有多个数据源,可以多次创建
会话工厂。但同时我也读到了
sessionFactory
也实现了
singleton
。这不矛盾吗???

它是单例的,每个数据源一个。它是单例的,您可以为一个数据源创建一个sessionfactory,您不能将同一实例用于其他数据源(即单实例),谢谢@Pragnani。但通常,当我们将一个类设置为Singleton时,我们确保在任何情况下都不会有该类的其他实例,但该语句会有条件地将其设置为Singleton。这是否使SessionFactory成为一个完整的单例类???它不是每个类装入器单例,而是每个数据源单例。
//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;
    }
}