SSH 控制 session 开和关 以及 线程thread的管理

问个关于session 和线程thread 的问题:

1、用hibernate 可以控制session 何时开、何时关闭以及事务的开和关,
但是使用SSH 之后,用spring 的 HibernateDaoSupport 和事务 TransactionProxyFactoryBean 代替了以前的一些session和 transaction 方面的操作,
这样一来是如何控制session的开和关,还是spring自动控制session 开和关?
spring是如何控制事务的开和关?

2、单独的hibernate 可以用线程ThreadLocal来管理Session,加入使用spring之后如何处理和线程之间的关系?

刚弄这方面的东西,不是很了解。哪位推荐一下优化的好策略。

1个回答

控制session的关闭可以在web.xml中通过过滤器来实现

openSessionInView

org.springframework.orm.hibernate3.support.OpenSessionInViewFilter

<filter-mapping>
    <filter-name>openSessionInView</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

事务管理 可以在application.xml中代码如下,我在业务层对事务进行统一管理。业务层在com.service包下

class="org.springframework.orm.hibernate3.HibernateTransactionManager">


<!-- 事务属性(新功能)
propagation="REQUIRED"(默认)事务传播行为(没有事务就传,有事务就用原来的)
isolation="DEFAULT" (默认)事务隔离级别(由dbms隔)

-->
<tx:advice id="mytx">
    <tx:attributes>
        <tx:method name="add*" propagation="REQUIRED"
            isolation="DEFAULT" />
        <tx:method name="delete*" propagation="REQUIRED" />
        <tx:method name="update*" propagation="REQUIRED" />
        <tx:method name="saveorupdate" propagation="REQUIRED" />
        <tx:method name="*" propagation="SUPPORTS" read-only="true" />
    </tx:attributes>
</tx:advice>


<!-- 织入 -->
<aop:config>
    <aop:advisor advice-ref="mytx"
        pointcut="execution(* com.service.*.*(..))" />
</aop:config>
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问