OpenSessionInView理解
来源:互联网 发布:php前端页面 编辑:程序博客网 时间:2024/05/29 15:37
在项目里面真正的精华就是web.xml里面的这几行代码:
<filter>
<filter-name>hibernateFilter</filter-name>
<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter- class>
</filter>
<filter-mapping>
<filter-name>hibernateFilter</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
好啦,一切ok了。接下来的就有spring容器来帮我们做了。有的人也许会问了,你说得也太简单了吧?简单的让我不能相信了。其实不然,越复杂的东西有时候往往就是一句话的事。听我慢慢道来。
这个属性就是为了支持hibernate的延迟加载而设计的,spring倡导的是面向接口编程,而且在源文件里面大量的使用了Factory-mode 和Singleton-mode。但是这就和hibernate的延迟加载产了冲突。如果不使用hibernate的 OpenSessionInViewFilter过滤器,那么当使用完getHibernateTemplet().save()或者delete()对象以后,spring会自动的关闭session。即使你使用了延迟加载的机能,spring也不会管你那套的。该关的session一刻也不等。当你想延迟加载某些类的某些设置为延迟加载的属性以后,spring就会报出session is close的错误,这该死的spring。为了优化系统的启动速度我才延迟的,为什么你这么不通情达理?不然,使用了 OpenSessionInViewFilter以后,当你save完一个对象以后,因为有这个过滤器,所以spring会把这个连接放到线程池里面,而不是马上就关闭。当需要延迟加载的时候,spring会从线程池里面取出那个session完成加载的动作。当确定这个session确实不再需要的时候,spring才会close掉这个session。原理就是这么简单。我们只需要做的就是在web.xml里面配置那几行代码,其他的就按照我们预期的做,spring会自动帮我们完成我们想要的。
- OpenSessionInView理解
- OpenSessionInView
- OpenSessionInView
- OpenSessionInView
- OpenSessionInView
- openSessionInView
- OpenSessionInView
- OpenSessionInView
- OpenSessionInView
- OpenSessionInView
- OpenSessionInView
- opensessioninview
- OpenSessionInView
- OpenSessionInView
- 对于Spring中openSessionInView的理解
- OpenSessionInView感想
- OpenSessionInView模式
- OpenSessionInView详解
- 现实是什么?
- 光棍节的一天
- Ruby on rails开发从头来(windows)(七)-创建在线购物页面(修正原版错误)
- delphi心得,看书来的
- 删除Oracle
- OpenSessionInView理解
- PLSQL to_char function
- 项目管理之我见---第一篇 开头
- TCP/IP协议分析-协议分层
- 顾问成长(6)-其貌不扬就不能做顾问?
- OSI七层网络模型与TCP/IP四层网络模型
- iret
- 用VC制作动态弹出的对话框
- Hibernate关联映射—组件映射