DWR3.0解决hibernate延迟加载问题
2011-05-22 12:59
405 查看
最近因为项目数据量增加,项目显得非常慢,有时候甚至出现内存溢出。仔细查找原因,原来是使用DWR以后使hibernate的一次加载失效。在官方网站查询相关问题,即配置:
<convert match="your.bean" converter="hibernate3"></convert>
这样效率大大提高,并且错误也解决,但是新的问题来了,此时加载不了代理类,即hibernate的关联对象,又导致了新的一批问题出现。
又继续探索官网,在官网有一段话大体意思是:如果只是用hibernate的话,那么你在使用的时候必须保证session没有被关闭,如果使用的spring的话,在web.xml配置OpenSessionInViewFilter,即:
<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>/*</url-pattern>
</filter-mapping>
配置了以后,问题还是未解决,仔细想想,我前台调用了代理类,这些只是JS代码,服务端感受不到。
想来想去,最后只有将hibernate多对一的layz="false"方解决此问题。
在此建议:一对多一定要使用延迟加载策略:layz="true",否则当数据量大的时候,dwr会内存溢出,
我的项目就是当时没有设置这个,结果多的那边一下子加载5万条数据出错。
另外补充一点:dwr2.0:
<convert match="your.bean.*" converter="hibernate3"></convert>
支持bean下面所有目录
dwr3.0:
<convert match="your.bean.*" converter="hibernate3"></convert>
<convert match="your.bean.**" converter="hibernate3"></convert>
一个支持下一次目录,一个支持下面所有目录
<convert match="your.bean" converter="hibernate3"></convert>
这样效率大大提高,并且错误也解决,但是新的问题来了,此时加载不了代理类,即hibernate的关联对象,又导致了新的一批问题出现。
又继续探索官网,在官网有一段话大体意思是:如果只是用hibernate的话,那么你在使用的时候必须保证session没有被关闭,如果使用的spring的话,在web.xml配置OpenSessionInViewFilter,即:
<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>/*</url-pattern>
</filter-mapping>
配置了以后,问题还是未解决,仔细想想,我前台调用了代理类,这些只是JS代码,服务端感受不到。
想来想去,最后只有将hibernate多对一的layz="false"方解决此问题。
在此建议:一对多一定要使用延迟加载策略:layz="true",否则当数据量大的时候,dwr会内存溢出,
我的项目就是当时没有设置这个,结果多的那边一下子加载5万条数据出错。
另外补充一点:dwr2.0:
<convert match="your.bean.*" converter="hibernate3"></convert>
支持bean下面所有目录
dwr3.0:
<convert match="your.bean.*" converter="hibernate3"></convert>
<convert match="your.bean.**" converter="hibernate3"></convert>
一个支持下一次目录,一个支持下面所有目录
相关文章推荐
- 使用Hibernate.initialize解决no session的延迟加载问题
- failed to lazily initialize a collection of role: no session or session was closed (Hibernate) 解决方法(延迟加载问题)
- Hibernate中的session和load延迟加载矛盾问题,如何解决?
- 使用clone解决hibernate+spring集成中的延迟加载问题及分析(no session or session was closed)
- Hibernate延迟加载以及利用Spring事务完美解决延迟加载问题
- Hibernate延迟加载 或 no session or session was closed 问题的解决(OpenSessionInViewFilter使用)
- hibernate 使用延迟加载产生的问题以及对应的解决方法
- json解决hibernate中级联对象延迟加载问题net.sf.json.JSONException: org....
- Hibernate_使用clone解决hibernate延迟加载问题及分析
- 使用Hibernate.initialize解决no session的延迟加载问题
- json解决hibernate中级联对象延迟加载有关问题
- json解决hibernate中级联对象延迟加载问题net.sf.json.JSONException: org....
- hibernate 延迟加载(Lazy)问题spring下解决方法
- SSH项目web.xml文件的常用配置【struts2的过滤器、spring监听器、解决Hibernate延迟加载问题的过滤器、解决中文乱码的过滤器】
- 使用clone解决hibernate+spring集成中的延迟加载问题及分析(no session or session was closed)
- Spring使用OpenSessionInViewFilter解决Hibernate的lazy延时加载问题
- Hibernate中的session和load延迟载入矛盾问题,怎样解决?
- 解决Spring使用中hibernate懒加载问题
- Hibernate的延迟加载解决大全
- hibernate延迟加载问题