`
wxinpeng
  • 浏览: 581632 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

dwr 中hibernate的查询时加载所有的关联对象及延迟加载问题

阅读更多

我们有一个one-many的两个关联类。前台通过dwr根据one端的Id去取many端的list。

dwr.xml的配置文件如下:(dwr与spring整合)

<convert converter="bean"  match="cn.cric.model.Role" />	
<convert converter="bean" match="cn.cric.model.Department" />
<create javascript="RoleDWR" creator="spring">
	<param name="beanName"  value="roleManagerImpl" />
	<include method="findRoleByDpId" />
</create>

 当执行查询的时候,dwr会根据convert元素配置的bean,将该值对象的所有属性,及其这些属性的所有属性,所有属性的属性,都以穷举的方式取出来。这样将是数据库操作的一个灾难。

 

正确的配置方法为::在配置convert元素时,使用exclude和include参数

     include:允许加载的属性。

     exclude:不允许加载的属性。

<convert converter="bean"  match="cn.cric.model.Role" >
	<!-- 配置该类中允许加载的属性 -->
	<param name="include" value="id,department,roleName,rolePurView,total"/>
</convert>
<convert converter="bean" match="cn.cric.model.Department" />
<create javascript="RoleDWR" creator="spring">
	<param name="beanName"  value="roleManagerImpl" />
	<include method="findRoleByDpId" />
</create>

 如此以来,当我们查询many端的数据时。就只会去查询我们所定义的类中的属性了。

如果查询时报延迟加载问题,DWR官方建议我们使用hibernate的openSessionInViewFilter。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics