今天爱分享给大家带来spring 中 OpenSessionInViewFilter 作用什么的,解决了什么问题【面试题详解】,希望能够帮助到大家。
参考答案】
解决 Hibernate 的 Session 的关闭与开启问题。
SSH 整合问题:Hibernate 允许对关联对象、属性进行延迟加载,但是必须保证延迟加
载的操作限于同一个 Hibernate Session 范围之内进行。如果 Service 层返回一个启用了延
迟加载功能的领域对象给 Web 层,当 Web 层访问到那些需要延迟加载的数据时,由于加
载领域对象的 Hibernate Session 已经关闭,这些导致延迟加载数据的访问异常。而 Spring
为 我 们 提 供 的 OpenSessionInViewFilter 过 滤 器 为 我 们 很 好 的 解 决 了 这 个 问 题 。
OpenSessionInViewFilter 的主要功能是用来把一个 Hibernate Session 和一次完整的请求过程
对应的线程相绑定,允许在事务提交之后延迟加载显示所需要的对象。实现”Open Session in
View”的模式 。
【补充说明】
配置如下:
Spring OpenSessionInViewFilter org.springframework.orm.hibernate3.support.OpenSessionInViewFilter sessionFactoryBean sessionFactory Spring OpenSessionInViewFilter /*
一般在项目中 SSH 整合时,我们会加入上面的配置,解决延迟加载时的异常。