有javaeye上的一篇文章http://www.iteye.com/topic/18904,写的真是不错,学到了很多的东西。
在使用的时候,我在web.xml中配置了OpenSessionInViewFilter,并且启动了二级缓存,但是,在方便的同时,还真的发现了很多的问题
1.我有一个Column类,其下有一个news集合,是一个一对多的关系,在Column端对news集合设置了reverse=true,用ecache配置了
<cache name="com.qinglin.model.Column.news"
maxElementsInMemory="500" eternal="false" timeToLiveSeconds="7200"
timeToIdleSeconds="3600" overflowToDisk="true" />
这样在新建一个news,并且setColumn(Column c)后,前台还真是没有及时的更新,引用上面仁兄的话,一个collection缓存仅在这个collection里面的元素有增删时才失效。而我在Column端对news集合设置了reverse=true,当然不会自动更新二级缓存中的集合news了,没办法,手动this.getSessionFactory().evictCollection("com.qinglin.model.Column.news",news.getCol_id()); ,清除集合news缓存。
2.仍旧是上面的一个例子,在news.xml中对日期这个属性
<property name="add_date" type="java.util.Date" update="false">
<column name="add_date" length="19">
<comment>添加日期</comment>
</column>
</property>
这样,也在更新新闻这个类时出问题了,由于我在web.xml中设着了OpenSessionInViewFilter,且想更新完新闻后,接着显示出这条新闻,结果发现,session中竟然没有日期这一行,想了想,在edit(news)方法中加上了
news = (News)this.getHibernateTemplate().merge(news);
this.getSession().flush();
this.getSession().refresh(news);
这三句,第一句的得到的持久化对对象news没有add_date属性,第二句是为了向数据库中发送update的sql语句,更新数据库,由于设置了update=false,则数据库中的add_date不会失效,另外第三条语句是为了再从数据库中取出这个具有add_date属性的新闻,更新session缓存,为了在到达前台时能够正常的显示日期。
分享到:
相关推荐
2. **Hibernate的一、二级缓存**: - **一级缓存**:每个`Session`对象都包含一个一级缓存,它是线程不安全的,用于存储在该`Session`生命周期内的对象。当`Session`关闭时,缓存中的对象也会被清除。 - **二级...
例如,二级缓存的使用需要谨慎,以免造成内存泄漏或不必要的数据同步开销。 第三,Spring框架不仅提供了IoC容器,还引入了AOP,用于实现声明式事务管理。这意味着开发者无需在代码中显式处理事务边界,而是通过配置...
<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter <!-- ExtremeTable Excel/PDF 导出过滤器 --> <filter-name>eXtremeExport <filter-class>org.extremecomponents....
- **西安永兴科技发展有限公司内部管理系统**:在这个项目中,他使用了相同的Struts2+Spring+Hibernate技术栈,负责了岗位管理、部门管理等功能,并在权限管理上运用了Session的二级缓存优化和Struts的拦截器来实现...
在Java EE开发领域中,SSH(Struts+Spring+Hibernate)是一种非常流行的轻量级Web应用开发框架组合。通过整合这三个框架,开发者可以构建出功能强大且易于维护的企业级应用系统。本文将围绕SSH框架整合过程中所需的...
5. **数据库管理**:翟明明熟悉MySQL和Oracle数据库,能进行数据库设计和优化,如使用二级缓存技术来提升性能。 6. **Linux操作系统**:熟悉Linux操作系统的常用操作,意味着他在部署和管理服务器方面有一定经验,...
# S2SH配置详解 ## 一、概述 在探讨S2SH配置的过程...通过这些配置,可以有效地集成Spring、Struts2和Hibernate三大组件,实现高效的数据访问和业务逻辑处理。同时,这些配置也为开发者提供了良好的扩展性和维护性。
- **性能优化**:考虑使用二级缓存提高查询效率。 - **异常处理**:确保所有异常都能被妥善处理,避免程序崩溃。 - **安全性**:加强SQL注入等安全防护措施。 - **测试**:进行单元测试和集成测试,确保各部分功能...
- **二级缓存**:可选的,用于跨会话的缓存。 7. **OpenSessionInViewFilter的使用** - 用于解决懒加载问题。 8. **Hibernate检索方式** - **HQL**:面向对象的查询语言。 - **Criteria**:灵活构建查询条件...
OpenSessionInView是一种技术,用于解决Hibernate在多线程环境下的一级缓存问题。通过在web.xml中配置`OpenSessionInViewFilter`,可以实现持久化层的事务与视图渲染的无缝结合,提高应用性能。 ##### 2. **Struts...