`
zhaosoft
  • 浏览: 186344 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

OpenSessionInView理解

阅读更多

在项目里面真正的精华就是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会自动帮我们完成我们想要的。

分享到:
评论

相关推荐

    Spring hibernate opensessioninview

    ### Spring + Hibernate OpenSessionInView 模式的理解和应用 在Java Web开发中,Spring与Hibernate作为两个重要的框架,经常被一起使用来实现业务逻辑与数据持久化的处理。而在使用这两个框架时,为了更好地管理...

    OpenSessionInView项目整合jar包

    理解OpenSessionInView模式及其整合过程对Java Web开发者至关重要,它可以帮助优化数据访问性能,避免由于Session关闭引发的懒加载异常,提高应用程序的稳定性和用户体验。同时,注意合理配置和使用,以防止长时间...

    SSH项目整合示例【OpenSessionInView】所用到的jar包

    SSH是Java Web开发中的一个流行框架组合,由Struts、Hibernate和Spring三个组件构成。这个框架集成提供了模型-...尽管如此,理解SSH的整合对于学习和理解Java Web开发的历史以及现代框架的设计思想仍然具有重要意义。

    Spring提供的CharacterEncoding和OpenSessionInView功能

    Spring框架是Java开发中不可或缺的一部分,它为开发者提供了丰富的功能,包括依赖注入、面向切面编程、事务管理等。...同时,了解SSH框架的历史和演变,有助于理解现代Java Web开发的趋势和技术选择。

    关于OpenSessionInViewFilter的学习

    OpenSessionInViewFilter是Spring框架中一个非常重要的组件,主要用于解决数据访问...这个文档应该包含了OpenSessionInViewFilter的源码分析、配置示例以及常见问题的解答,对理解该过滤器的功能和工作原理非常有帮助。

    JAVA自学之路 七路线图明细

    掌握实体属性映射,关联关系映射,Native SQL,inverse,lazy,cascade,继承关系映射,HQL,性能优化,一级缓存,二级缓存,查询缓存,事务管理,悲观锁和乐观锁,以及OpenSessionInView和CurrentSession。...

    java自学之路num1

    性能优化,一级缓存,二级缓存,查询缓存,事务管理(悲观锁、乐观锁),以及OpenSessionInView和CurrentSession策略。 9. **Spring**:IoC(控制反转)和DI(依赖注入)的核心概念,Spring的架构,AOP(面向切面...

    SSH整合示例项目 hibernate5.2.3+struts2.5.2+spring4.3.3.zip

    SSH整合是Java Web开发中的一种经典技术栈,包括Spring、Struts和Hibernate三个核心框架。这个项目是一个基于最新版本SSH的示例应用,具体...开发者可以通过学习和实践这个项目,深入理解SSH整合的核心概念和实际运用。

    J2EE学习路线及重要知识点.pdf

    主要接口(尤其是Session),普通属性和关联关系映射,Native SQL,inverse lazy cascade,继承关系映射,HQL,性能优化(一级缓存,二级缓存,查询缓存),事务和并发控制(悲观锁,乐观锁),OpenSessionInView,...

    spring+spingmvc+hibernate整合总结

    《Spring+SpringMVC+Hibernate整合详解》 在Java Web开发中,Spring、SpringMVC和Hibernate是三个非常重要的框架,它们分别负责...在期末复习时,理解并掌握这些关键知识点,对于理解和应用Java Web开发具有重要意义。

    SSH项目整合示例【源码】

    在Spring中,通过开启`&lt;tx:annotation-driven&gt;`和配置`HibernateTransactionManager`,结合特定的拦截器,可以实现OpenSessionInView。 5. **整合过程**:SSH整合涉及配置多个文件,包括web.xml(应用部署描述符)...

    最全的Spring考题与答案

    - OpenSessionInView模式:解决长时间数据库会话问题,可通过过滤器或拦截器实现。 5. **Spring事务管理** - TransactionDefinition:定义事务属性,如隔离级别、传播行为等。 - TransactionStatus:表示当前...

    面试知识点总结--spring面试题大全.pdf

    为解决OpenSessionInView的问题,可以使用OpenSessionInViewFilter或OpenSessionInViewInterceptor,确保在HTTP请求的整个生命周期内保持Hibernate Session的打开状态,以避免数据持久化问题。 Spring的事务管理: ...

    spring面试题

    - **OpenSessionInView**:解决长时间请求导致的事务问题,可通过添加 OpenSessionInViewFilter 或 OpenSessionInViewInterceptor。 5. **Spring 事务管理** - **TransactionDefinition**:定义事务属性,如隔离...

    java-spring面试题大全

    - 解决OpenSessionInView问题,可以使用OpenSessionInViewFilter或OpenSessionInViewInterceptor,确保在HTTP请求的整个生命周期中都保持数据库会话。 5. **Spring的事务管理**: - Spring提供了...

    jsf + spring +hibernate 自己做的一个例子,主要是看一些基本配置

    在整合JSF、Spring和Hibernate时,通常会使用Spring的OpenSessionInView模式来处理数据库会话。这能确保在HTTP请求的整个生命周期内保持有效的Hibernate Session,从而避免可能出现的数据访问问题。 至于压缩包中的...

    spring面试题大全

    4. 解决OpenSessionInView问题,可以使用OpenSessionInViewFilter或OpenSessionInViewInterceptor,确保在一次HTTP请求中保持Hibernate Session的开放状态,以解决懒加载异常。 Spring的事务管理分为编程式和声明式...

    百度面试题

    - OpenSessionInView模式在Web请求处理过程中保持Hibernate Session打开,直到视图渲染完成,确保数据的一致性。但也可能导致长时间持有数据库连接,增加内存占用。合理控制Session的生命周期对性能至关重要。 10....

    struts+spring+hibernate面试题

    在Java Web开发中,Struts、Spring和Hibernate是最常见的三大框架,它们...以上就是关于Struts、Spring和Hibernate面试题的详细解析,涵盖了这三大框架的关键概念和使用技巧,对于理解和解答相关面试问题非常有帮助。

    Java框架面试题

    Java框架面试题主要涵盖了许多核心概念,特别是在Spring和Hibernate这两个流行的Java框架中。...以上是Java框架面试中常见的问题和解答,涉及到了Struts、Hibernate和Spring的核心机制,对于理解和准备面试至关重要。

Global site tag (gtag.js) - Google Analytics