Hibernate4,Spring4.3,Thread,Session

时间:2018-05-14 18:00:56

标签: java spring multithreading hibernate session

我在spring.xml中声明了以下内容:

 <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
  ...
  </bean>
  <bean id="sessionFactory"
    class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="configLocation" value="classpath:hibernate.cfg.xml" />
  </bean>

    <bean id="transactionManager"
    class="org.springframework.orm.hibernate4.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory" />
    </bean>

    <!-- Adapters -->
    <bean id="ADBAdapter" class="model.adapter.ADBAdapter">
        <constructor-arg>
            <ref bean="sessionFactory" />
        </constructor-arg>
    </bean>

所以在我创建了上下文之后。我可以访问我的ADBAdapter并做一些事情。

问题是,我想在另一个线程中使用ADBAdapter。 但后来我偶尔会遇到SessionClosed Exception,因为会话在父线程中关闭了。

我该如何处理?

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

在休眠中你可以使用

hibernate.current_session_context_class=thread