OpenSessionInViewFilter 配置注意事项

首先要在工程的web.xml中配置如下:

 <filter>
    <filter-name>openSessionInViewFilter</filter-name>
    <filter-class>org.springframeword.orm.hibernate3.OpenSessionInViewFilter</filter-class>

    <init-param>

            <param-name>singleSession</param-name>

            <param-value>true</param-value>

    </init-param>

    <init-param>

            <param-name>sessionFactoryBeanName</param-name>

            <param-value>sessionFactoryClientManage</param-value>

    </init-param>
</filter>

 

这里配置的时候涉及到两个初始化的参数,其中singleSession为true可保证如果获取当前线程绑定的session没有获取到的话,可以重新创建一个(细节大家可以看下相关API或者是源码)。看网上好多相关的说法突出说明一定要配置singleSession为true,实际上在源码中,这个属性默认就是为true的。

另外还有一个sessionFactoryBeanName这个属性,这个属性是指定通过哪个sessionFactory去获得session的。默认情况下,会在Spring管理的Bean中去查找ID为sessionFactory的sessionFactory配置,如果你在开发的过程中指定了其它的ID名称,那么在这里一定要记住进行配置。要不就会报找不到那个bean的错误。

 

好了,接下来我们就可以用这个拦截器去过滤我们的servlet了

<filter-mapping>

       <filter-name>openSessionInViewFilter</filter-name>

       <servlet-name>这里加入你要过滤的servlet名称</servlet-name>

</filter-mapping>

 

 

OK,现在好了,我们可以用了。

 

用这个的时候经常遇到一些问题如下:

 

打开的session是否要自己关闭:这个是不用的,上面指定的filter打开session,同时在完成请求之后会把这个session关掉的,所以自己不用关心这个。

 

 

通过session.openConnection()方法打开的connection要自己关闭吗,其实一般来说,自己打开的资源是需要自己关闭的,

但是这里的connection并不是自己打开的,如果使用了连接池的话,session用完的connection会回到池中的,这个会由连接池去管理,所以自己也不用操心(这个只是自己的理解,不知道对不对)。

 

好了,这个就写到这,大家有什么想法一起交流,谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值