java - 返回 Hibernate 4.3 的 SessionFactory Singleton 对象

标签 java hibernate sessionfactory

我正在使用 Hibernate 4.3。我正在尝试从 HibernateUtil 类中获取 SessionFactory 对象。我试图为整个应用程序只获取一个 SessionFactory 对象,即应用程序的 Singleton 对象。

下面是我目前的代码,我想把它做成单例类。

HibernateUtil.java

public class HibernateUtil {

    private static SessionFactory sessionFactory;
    private static StandardServiceRegistry serviceRegistry; 

    public static SessionFactory getSessionFactory() {
      Configuration configuration = new Configuration();
      configuration.configure();
      serviceRegistry = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build();
      sessionFactory = configuration.buildSessionFactory(serviceRegistry);
      return sessionFactory;
  }

}

请为此建议或提供示例代码。 谢谢。

最佳答案

只应用单例模式

public class HibernateUtil {

  private static StandardServiceRegistry serviceRegistry; 
  private volatile static SessionFactory INSTANCE = null;

  public static SessionFactory getSessionFactory() {
    if(INSTANCE==null){
      createSessionFactory();
    }
    return sessionFactory;
  }

  private synchronized static void createSessionFactory() {
    if(INSTANCE!=null){return;}

    Configuration configuration = new Configuration();
    configuration.configure();

    serviceRegistry = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build();
    INSTANCE = configuration.buildSessionFactory(serviceRegistry);
  }
}

编辑:修正了一个逗号拼写错误

关于java - 返回 Hibernate 4.3 的 SessionFactory Singleton 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24155264/

相关文章:

java - NoSuchBeanDefinitionException 如何初始化 SessionFactory bean?

Java 数据源 SessionFactory

database - 为 nhibernate 指定命名的 SQL Server 实例

java - 查找总和等于给定值的子数组的计数

java - ArrayList 覆盖自身

java - 找不到元素 'persistence' 的声明

Hibernate 等于方法

java - 为 JanusGraph 提供属性值时,只有前 20 个字符作为值存储在使用 Java 的属性中

java - 为什么使用 HttpServletResponseWrapper 与直接扩展 HttpServletResponse

java - 如何使用 JPA 和 Hibernate 获取关联只读实体的单个实例?