java框架spring中的opensessioninview有什么作用
2015-03-08 10:24
471 查看
在hibernate中使用load方法时,并未把数据真正获取时就关闭了session,当我们真正想获取数据时会迫使load加载数据,而此时 session已关闭,所以就会出现异常。 比较典型的是在MVC模式中,我们在M层调用持久层获取数据时(持久层用的是load方法加载数据),当这一调用结束时,session随之关闭,而我们 希望在V层使用这些数据,这时才会迫使load加载数据,我们就希望这时的session是open着得,这就是所谓的Open Session In view 。 我们可以filter来达到此目的, 也可以用interceptor来做。 filter: ? <!-- Spring的OpenSessionInView实现 此监听器应该在struts2的监听器前面--> <filter> <filter-name>openSessionInViewFilter</filter-name> <filter-class> org.springframework.orm.hibernate3.support.OpenSessionInViewFilter </filter-class> </filter> <filter-mapping> <filter-name>openSessionInViewFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> interceptor: ? importorg.springframework.orm.hibernate3.support.HibernateDaoSupport; publicclassXxxDAOextendsHibernateDaoSupport { publicvoidsave(Xxx transientInstance) { try{ getHibernateTemplate().save(transientInstance); }catch(RuntimeException re) { throwre; } } } OpenSessionInViewFilter的主要功能是用来把一个Hibernate Session和一次完整的请求过程对应的线程相绑定。Open Session In View在request把session绑定到当前thread期间一直保持hibernate session在open状态,使session在request的整个期间都可以使用,如在View层里PO也可以lazy loading数据,如 ${ company.employees }。当View 层逻辑完成后,才会通过Filter的doFilter方法或Interceptor的postHandle方法自动关闭session。 另外,<url-pattern>/*</url-pattern>中最好不要写/*, 因为这样的话,访问所有的url都会为其开一个session,造成性能的下降;
相关文章推荐
- [转]java框架spring中的opensessioninview有什么作用
- java框架spring中的opensessioninview有什么作用
- java框架spring中的opensessioninview的作用
- Spring——OpenSessionInViewFilter 的配置及作用
- Java程序员从笨鸟到菜鸟之(八十三)细谈Spring(十二)OpenSessionInView详解及用法
- web.xml中配置Spring的OpenSessionInViewFilter的作用
- Spring 4.16: OpenSessionInViewFilter 的配置及作用
- 【Spring】--OpenSessionInViewFilter 的配置及作用
- Java程序员从笨鸟到菜鸟之(八十三)细谈Spring(十二)OpenSessionInView详解及用法
- 详细解析Spring事务的配置和OpenSessionInview的作用
- [转]Java程序员从笨鸟到菜鸟之(八十三)细谈Spring(十二)OpenSessionInView详解及用法
- Java程序员从笨鸟到菜鸟之(八十三)细谈Spring(十二)OpenSessionInView详解及用法
- OpenSessionInViewFilter作用及配置
- spring 的OpenSessionInViewFilter简介及源码
- spring 的OpenSessionInViewFilter简介(1)
- 使用Spring提供的Open Session In View而引起Write operations are not allowed in read-only mode (FlushMode.NEVER) 错误解决
- Spring提供的CharacterEncoding和OpenSessionInView功能
- OpenSessionInViewFilter作用及配置
- 配置OpenSessionInView的作用(转载)
- spring 的OpenSessionInViewFilter简介(1)