`
john.yi
  • 浏览: 13230 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

opensessioninview与hibernate缓存问题

    博客分类:
  • ssh
阅读更多

问题描述:

      项目基于SSH框架,在action中forward到其他的action,或者其他action再forward到其他action时,

最终显示页面如果用到关联对象的属性(非ID),则该属性值为空

 

分析:

      由于使用opensessioninviewfilter,在action中不是直接呈现页面,而是经过多次forward,导致hibernate

session启用一级缓存了关联对象,而该关联对象在内存中并不是所有属性值都和数据库字段值一致,可能有些属性值为

空,所以在页面上取不到

 

解决:

      手工清理session缓存

     或者在action中用redirect而不是forward

 

例子:

     如果编写了通用的dao,那么重写dao里的方法。例如重写:

@Override
 public Serializable save(final Object obj) {
  // TODO Auto-generated method stub
  return (Serializable) getHibernateTemplate().execute(new HibernateCallback() {
  
   public Object doInHibernate(Session session) throws HibernateException,
     SQLException {
    Object pk  = session.save(obj);
    session.clear();
    return pk;
   }
  });
 }

 

或者:

ActionForward af = new ActionForward("/xx.do?operate=doBiz&goodsId=" + goodsId);
 af.setRedirect(true);
 return af;

 

0
0
分享到:
评论

相关推荐

    韩顺平spring 雇员管理系统hibernate jar包

    Hibernate是一个流行的开源Java ORM框架,它简化了Java应用与关系型数据库之间的交互,通过将Java对象与数据库表进行映射,避免了繁琐的SQL代码编写。在"hibernateOrJPA.zip"压缩包中,包含了实现这一系统的相关资料...

    hibernate面试题总结

    Hibernate是Java领域中一款流行的持久...以上就是Hibernate面试中常见的问题和答案,涵盖了基本概念、缓存策略、查询方式以及事务和数据访问等方面的知识点。理解并掌握这些内容对于深入学习和使用Hibernate至关重要。

    hibernate 中的lazy属性祥解.txt

    在探讨Hibernate框架中的`lazy`属性时,我们深入解析了其功能、应用场景以及与之相关的潜在问题,尤其关注于如何有效利用此特性以优化数据库性能和应用响应速度。 ### Hibernate框架简介 Hibernate是一个开放源码...

    Hibernate学习笔记

    配置Hibernate缓存和OSCache,可以提高应用程序的性能。分布式缓存和中央缓存是更高级的缓存策略。 事务管理是数据持久化中的重要组成部分。Hibernate支持JDBCTransaction和JTATransaction两种事务方式,可以结合...

    SSH整合 struts+hibernate+spring

    **OpenSessionInView模式**是一种常用的Hibernate优化模式,其主要目的是解决Hibernate的一级缓存问题。通过这种方式,可以确保在一个HTTP请求的生命周期内,Hibernate的Session始终处于打开状态,从而避免了因...

    hibernate优化

    在Web开发中,OpenSessionInView模式能有效解决这个问题,但也要注意避免长时间占用Session资源。 其次,【抓取粒度】的调整也是关键。粒度决定了导航关联关系时预加载的数据量。通过设置batch-size,可以控制一次...

    struts+spring+hibernate面试题

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

    HibernateSpring多数据库解决方案.doc

    接下来,配置了`hibernate.cfg.xml`,这是Hibernate的配置文件,包含了如方言、缓存、实体映射等信息。通过`ClassPathResource`将这个文件作为资源加载到Spring容器中。 然后,针对每个数据源,我们创建了对应的`...

    struts+hibernate,spring面试题

    7. **Hibernate的延迟加载和openSessionInView**: 延迟加载意味着只有在需要时才加载数据,需要在Session范围内。`openSessionInView`过滤器确保每个HTTP请求都有一个开启的Session,以支持延迟加载。 8. **...

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

    - **二级缓存**:提高数据访问效率,OpenSessionInView模式下配合Spring实现 session级缓存。 **OpenSessionInView模式** OpenSessionInView模式是一种解决数据持久层和Web层之间事务管理的策略。在用户请求到达时...

    struts2+hibernate+spring

    Struts2、Hibernate与Spring(通常简称为SSH)是Java Web开发中的三个流行框架。它们的结合可以极大地提高Web应用的开发效率和可维护性。具体来说: - **Struts2**:用于构建MVC架构的应用程序,它负责处理用户的...

    收集的struts+spring+hibernate面试题.doc

    ### Struts + Spring + Hibernate 面试题解析 #### 1. AOP 和 IOC 的概念以及在 Spring 中...以上内容涵盖了 Struts、Spring 和 Hibernate 的基础知识及面试常见问题解答,希望能够帮助读者更好地理解和掌握这些技术。

    收集的struts+spring+hibernate面试题借鉴.pdf

    而`get()`会首先检查一级缓存,然后二级缓存,最后查询数据库,如果找不到则返回null。 7. Hibernate的延迟加载机制允许在需要时才加载关联对象,以提高性能。`openSessionInView`模式在Web层设置过滤器,保持...

    SSH面试总结(非常全)

    Hibernate的缓存策略与openSessionInView模式** 缓存策略是Hibernate性能优化的关键,而`openSessionInView`模式则是在Web应用中实现一级缓存的有效手段。它通过在每个请求开始时打开一个`Session`,并在请求结束...

    Java框架面试题

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

    SSH项目整合示例【源码】

    4. **OpenSessionInView**模式:这个模式是处理数据持久化问题的一种常见策略,尤其是在多层架构中。它确保在用户请求的整个生命周期内,Hibernate的Session保持打开状态,从而避免了“懒加载”时可能出现的...

    关于OpenSessionInViewFilter的学习

    OpenSessionInViewFilter是Spring框架中一个非常重要的组件,主要用于解决数据访问层(DAO)与视图层(View)之间的事务管理问题。在Web应用中,由于HTTP请求的无状态性,一次请求通常由多个Servlet过滤器、控制器和...

    SSH分页技术详解与实例

    SSH分页技术是Java Web开发中一种常见的数据处理方法,主要应用于大数据量的展示场景,如用户在浏览商品列表或论坛帖子时,通过分页来避免一次性加载所有数据导致的性能问题和用户体验下降。SSH指的是Spring、Struts...

Global site tag (gtag.js) - Google Analytics