有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在Hibernate中提供会话对象的DB管理器的良好设计模式是什么?

我正在开发一个类,为任何消费者提供会话。因此,这个类负责获取一个SessionFactory,打开一个会话,并在需要时传递它

那么,什么是更好的设计呢? 类中的静态方法

public class DbStatIo {
     private static SessionFactory factory=null;

    public static Session getSessionForStatDb(){
        if (factory==null){
            SessionFactory factory=new Configuration()
            .configure(FilesManager.getSenseiConfigForStatDb())
            .buildSessionFactory();
        }
        return factory.openSession();
    }

}

还是仅仅是一个地方公共活动?还是别的什么


共 (1) 个答案

  1. # 1 楼答案

    创建一个SessionFactory实例是一个非常昂贵的操作,因为它拥有大量的信息(如图here);因为它是线程安全的,所以拥有一个实例(作为单实例)或保持一个静态引用就足够了

    但是,将它作为一个单例使用可能会比将其存储为静态类中的字段更好、更灵活地控制对象的生命周期。您可以依赖于IDatabaseService的数据访问对象,公开一个方法getSession,该方法由HibernateService的单个实例实现