0

我正在使用休眠并且在如何使用会话时遇到了一些麻烦,这是最好的方法:

  1. 使用一个会话并在单例中打开它

    public static CommonServiceImpl getInstance() {
    
        if (session == null ||  !session.isOpen() ) {
            session = sessionFactory.openSession();
        }
        //session.clear();
        return instance;
    }
    
  2. SessionFactory每次我想使用会话时使用sessionFactory.getCurrentSession()

4

1 回答 1

1

会话对象被设计为一个轻量级的一次性对象,您可以按需打开和处理它。您不应该尝试自己重用它(如单例)
真正的问题是线程安全:而 SessionFactory 对象是线程安全的,会话对象不是并且当从多个线程指向时会造成破坏。
如果您不想每次都打开一个新会话,您可以使用当前会话选项,该选项允许您将会话绑定到会话工厂中的特定上下文(如线程),然后每次都检索它。

于 2013-05-06T13:58:05.677 回答