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;
}
}