我们有一个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。
