`
xianglg
  • 浏览: 67124 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

使用DWR,hibernate的annotation的lazy属性失效,为何?

阅读更多
我先说用了几个框架吧,spring,hibernate,dwr,然后bean用的是annotation标记的:
其中商品和订单表,我用的是一对多
Product bean
  1. @OneToMany(targetEntity = Order.class, cascade = CascadeType.REMOVE, fetch = FetchType.LAZY)   
  2.     @JoinColumn(name = "PRODUCTID")   
  3.     public List<Order> getOrders() {   
  4.         return orders;   
  5.     }  


在DAO层里,我用了spring的hibernateDaoSupport,其中有个分页查询方法:

java 代码
  1. /**  
  2.  * 根据页码和每页的长度返回对象集合  
  3.  *   
  4.  * @param pageNo  
  5.  *            页码  
  6.  * @param pageSize  
  7.  *            每页的长度  
  8.  * @return  
  9.  */    
  10. public Page<T> PageQuery(int pageNo,int pageSize){   
  11.     Criteria criteria = this.createCriteria();   
  12.     return this.pagedQuery(criteria, pageNo, pageSize);   
  13. }  

方法返回的page,我自己定义的一个封装了页面属性和内容的bean。

然后定义了一个service层的方法,调用DAO层的这个分页函数。

java 代码

 

  1. public List<Product> getProducts(int pageNo,int pageSize){         
  2.         return productDAO.PageQuery(pageNo, pageSize).getResult();   
  3.     }  

 JSP页面使用DWR调用service层的getProducts

xml 代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://getahead.org/dwr//dwr20.dtd">  
  3. <dwr>  
  4.     <allow>  
  5.         <create javascript="ProductService" creator="spring">  
  6.             <param name="beanName" value="productService"></param>  
  7.             <include method="loadProduct" />  
  8.             <include method="getProducts" />  
  9.         </create>  
  10.     </allow>  
  11. </dwr>  

再定义了JS函数

js 代码
  1. window.onload = function(){   
  2.     ProductService.getProducts(1,10,displayProducts);   
  3. }   
  4. function displayProducts(products){   
  5.     DWRUtil.removeAllRows("items");   
  6.     if (items.length == 0) {   
  7.         alert("No matching products found");   
  8.         $("products").style.visibility = "hidden";   
  9.     } else {   
  10.         DWRUtil.addRows("items",products,cellFunctions);   
  11.         $("products").style.visibility = "visible";   
  12.     }   
  13.        
  14. }   
  15. /*  
  16.  * Array of functions to populate a row of the items table  
  17.  * using DWRUtil's addRows function  
  18.  */  
  19. var cellFunctions =[   
  20.     function(product){return product.productname},   
  21.     function(product){return product.productdetail},   
  22.     function(product){return product.price},   
  23.     function(product) {    
  24.     var btn = document.createElement("button");   
  25.     btn.innerHTML = "Add to cart";   
  26.     btn.productId = product.id;   
  27.     btn.onclick = addToCartButtonHandler;   
  28.     return btn;   
  29.   }   
  30. ];  
所有的源码基本上就是这些,我使用单元测试时,lazy效果已经有了!但是我访问页面,通过dwr调用service层方法,好像却失效了,通查询查看hibernate日志,看到与之相关的所有select语句,全部打印了出来!
分享到:
评论
7 楼 smalltiger1984 2008-05-05  
知道了,原来是我<convert converter="bean" match="edu.erp.emp.bean.EmpBO" />这个配置有问题 ,要改成<convert converter="hibernate3" match="edu.erp.emp.bean.EmpBO" />
6 楼 smalltiger1984 2008-05-05  
能说一下怎么限制呢!
<create creator="spring" javascript="AjaxEmpService">
<param name="beanName" value="AjaxEmpService" />
<include method="sub_deploy" />
<include method="findEmp"/>
</create>
我这里也写了,可他还是会把子表里的全抓出来,能说一下你是怎么配的吗
5 楼 xianglg 2007-08-27  
找到原因了,我在convter的时候,param没有做"include",这样所有属性都为白名单,我做了限制后,问题解决!!
4 楼 cats_tiger 2007-08-24  
你有没有在dwr.xml中为Product和Order加converter?前面贴的代码好像没有。
提个建议,java代码中return之前最好把每个bean都evict一下或者转换为Map,可以写一个通用的转换函数或用beanUtils。如果不这样处理,由于打开着session,DWR会迫使Hibernate把能加载的数据都加载,尤其是在关联关系多的时候。
3 楼 xianglg 2007-08-24  
cats_tiger 写道
web.xml里面加Open Session In View Filter了吗?URL-Mapping设置:/dwr/*


原来的URL-Mapping设置:/*,改成你的设置,问题依旧
2 楼 xianglg 2007-08-24  
cats_tiger 写道
web.xml里面加Open Session In View Filter了吗?URL-Mapping设置:/dwr/*

原来就已经设置了,URL-Mapping设置:/*,改成你的设置,问题依旧
1 楼 cats_tiger 2007-08-24  
web.xml里面加Open Session In View Filter了吗?URL-Mapping设置:/dwr/*

相关推荐

    Dwr+Hibernate的Lazy问题

    然而,在DWR场景下,由于DWR需要将Java对象转换为JSON格式,以便在JavaScript中使用,这会触发getter方法,从而无意中激活了延迟加载,导致每访问一个延迟加载属性,就会执行一条SQL查询。 解决方案: 1. 使用`...

    extjs dwr hibernate spring

    extjs dwr hibernate spring 整合的树!

    省市县联动,dwr hibernate,mysql

    【标题】"省市县联动,DWR Hibernate,MySQL"涉及的是三个主要的IT技术领域:地理信息处理、Web服务和数据库管理。在这个场景下,它们共同构建了一个动态、实时的数据交互系统,通常用于构建中国的行政区划信息查询...

    struts2.1 spring2.5 ibatis2.3 dwr3 annotation配置 集成

    struts2.1 spring2.5 ibatis2.3 dwr3 annotation配置 集成 此中例子不完整. 如要下载:http://download.csdn.net/source/2138885

    dwr+hibernate实现的分页技术

    ### dwr+hibernate实现的分页技术详解 在当今快速发展的互联网环境中,网站和应用程序需要处理大量的数据。为了提高用户体验并优化服务器资源利用,分页技术成为了必不可少的一部分。本文将详细介绍如何通过结合dwr...

    spring2.5 ibatis2.3 struts2.1 dwr3 annotation集成配置

    综上所述,"spring2.5 ibatis2.3 struts2.1 dwr3 annotation集成配置"涉及到的不仅仅是单一技术的使用,更是Java Web开发中多框架协同工作的典范,展示了如何利用注解简化配置,提高开发效率,并为大型企业级应用...

    spring使用annotation整合dwr笔记

    ### Spring使用Annotation整合DWR知识点解析 #### 一、概览 在现代Web开发中,Direct Web Remoting(简称DWR)是一种简化Ajax应用开发的技术,它允许JavaScript直接调用服务器端的Java方法,而无需编写复杂的XML...

    Spring+Dwr+Hibernate整合项目

    在IT行业中,Spring、Direct Web Remoting (DWR) 和Hibernate是三个非常重要的框架,它们在构建企业级Java应用程序中发挥着关键作用。本项目整合了这三个技术,旨在提供一个高效、灵活且易于维护的后端系统。接下来...

    Ext+Spinrg dwr hibernate struts

    【标题】"Ext+Spring+DWR+Hibernate+Struts"是将这五个技术整合到一个项目中的示例,展示了如何在Java Web开发中利用这些框架进行高效协作。 【描述】提到的学习资源是一个关于EXT(Ext JS)和Direct Web Remoting ...

    疯狂Ajax讲义:Prototype/jQuery+DWR+Spring+Hibernate整合开发(part01)

    《疯狂Ajax讲义:Prototype/jQuery+DWR+Spring+Hibernate整合开发》是疯狂Java体系丛书之一,前8章基本以XHTML、JavaScript和DOM编程为主,无须任何基础即可阅读;第9章以后的内容则需要掌握Spring、Hibernate等Java ...

    dwr整合hibernate实例

    DWR通常需要dwr-engine.jar、dwr-api.jar以及dwr-spring.jar等,而Hibernate则需要hibernate-core.jar、hibernate-entitymanager.jar、jta.jar等。确保这些库已加入到项目的类路径中。 接着,配置Hibernate。在项目...

    dwr+spring+hibernate模板.zip

    总结起来,DWR+Spring+Hibernate的整合为开发者提供了强大的工具集,用于构建高性能、高可维护性的Web应用。通过合理配置和使用这三个框架,我们可以构建出既具备实时交互性又具有良好业务逻辑分离的系统,极大地...

    dwr + hibernate 入门示例代码

    《DWR + Hibernate入门示例代码详解》 在IT领域,DWR(Direct Web Remoting)和Hibernate是两个非常重要的工具,它们分别处理Web应用程序的远程调用和对象关系映射。本文将深入探讨如何结合DWR与Hibernate,通过一...

    ext-dwr-hibernate

    本项目名为"ext-dwr-hibernate",其核心是将三个重要的Java Web开发组件——EXT(一个富客户端JavaScript库)、Direct Web Remoting (DWR) 和 Hibernate(一个对象关系映射框架)进行整合。下面我们将详细探讨这三个...

    使用注解整合ext dwr spring hibernate

    Hibernate是一个强大的ORM(对象关系映射)框架,它可以将数据库操作转换为对Java对象的操作,降低了数据库编程的复杂性。Hibernate支持JPA(Java Persistence API),并提供了一套自己的API,方便进行数据持久化。 ...

    将dwr集成到spring mvc(dwr的配置是基于xml)

    你需要在`src/main/resources/META-INF/spring`目录下创建一个名为`dwr-servlet.xml`的文件,定义DWR的Servlet配置。例如: ```xml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation...

    DWR+Struts+spring+hibernate的订货系统

    DWR+Struts+spring+hibernate的订货系统,自己添加的dwr功能

    Struts2,Hibernate5,Dwr3

    Struts2、Hibernate5和DWR3是三个在Java Web开发中广泛应用的开源框架,它们分别专注于MVC(模型-视图-控制器)架构、对象关系映射(ORM)以及远程脚本(Remote Scripting)。这三者的整合为开发者提供了强大的工具...

    一个Spring+hibernate+dwr的例子程序

    标题 "一个Spring+hibernate+dwr的例子程序" 暗示了这是一个使用Java企业级开发框架构建的应用程序。这个程序结合了Spring、Hibernate和Direct Web Remoting (DWR)这三个核心组件,来实现高效、动态的Web应用程序。 ...

    DWR+hibernate+spring未完成例子

    【标题】:“DWR+Hibernate+Spring未完成例子”揭示了这个压缩包中包含的是一个未完成的示例项目,该示例项目整合了Direct Web Remoting (DWR)、Hibernate ORM框架和Spring框架。这三者都是Java Web开发中的重要组件...

Global site tag (gtag.js) - Google Analytics