【问题标题】:Hibernate session management休眠会话管理
【发布时间】:2013-04-30 06:53:00
【问题描述】:

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

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

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

【问题讨论】:

    标签: hibernate session sessionfactory


    【解决方案1】:

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

    【讨论】:

    • 感谢 Pavel,真的帮了我 :) 我发现最好的解决方案是切换到 Spring 会话管理
    猜你喜欢
    • 2015-10-31
    • 2021-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-27
    • 1970-01-01
    • 2012-06-02
    相关资源
    最近更新 更多