OpenSessionInView的重要性与作用
来源:互联网 发布:淘宝怎么申请加入客服 编辑:程序博客网 时间:2024/04/28 02:48
在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:
import org.springframework.orm.hibernate3.support.HibernateDaoSupport; public class XxxDAO extends HibernateDaoSupport { public void save(Xxx transientInstance) { try { getHibernateTemplate().save(transientInstance); } catch (RuntimeException re) { throw re; } }}
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,造成性能的下降;
- OpenSessionInView的重要性与作用
- OpenSessionInView的作用
- 简述OpenSessionInview的作用。
- 配置OpenSessionInView的作用(转载)
- java框架spring中的opensessioninview的作用
- OpenSessionInView 的作用、配置及原理
- 详细解析Spring事务的配置和OpenSessionInview的作用
- OpenSessionInView 与 transaction 问题
- h1标签的作用及其重要性
- spring的OpenSessionInView用法
- openSessionInView的问题?
- OpensessionInView的FlushMode问题
- LazyInitializationException的OpenSessionInView解决方案
- OpenSessionInView的原理图总结.
- 关于openSessionInView的问题
- openSessionInview的原理
- OpenSessionInView的优缺点
- 计划与规划的重要性
- javascript 请求后台 返回文件流、压缩包
- fatal error C1900: Il mismatch between 'P1' version '20080116' and 'P2' version '20070207'
- IPC--------fifo的进阶使用
- 集合深入研究(1)
- 2012年软件开发者薪资调查报告
- OpenSessionInView的重要性与作用
- 信号系统与数字信号处理一点点心得
- 在eclipse indigo上使用hadoop
- Maya DAG结构
- linux编译基本
- 提高生产力的2个方法:软件复用和知识库
- TCP/IP协议简介
- 增广路求网路最大流
- 练习3.1