0

我正在开发一个为任何消费者提供会话的类。因此,该类负责获取 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();
    }

}

还是只是当地的公共活动?或者是其他东西?

4

1 回答 1

2

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

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

于 2013-06-03T18:48:49.917 回答