`
afuer
  • 浏览: 9051 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

当Hibernate的lazy=true时,怎样使用Flex

阅读更多
   开发FLex约有3年,而且每次都使用了Hibernate,每次都遇到了lazy=true的问题,每次也都用非常愚笨的办法来解决。先把数据从数据库中取出,在转换之前清除掉不需要的属性
    虽说比较郁闷,但在性能与开发效率上勉强能满足需求。本文提供一个可以彻底解决Hibernate的lazy=true的问题的方案。
    1)下载RichLazyHibernate和flex相关的demo,网址为http://code.google.com/p/rich-hibernate-lazy/downloads/list ;

   2)根据中文档搭建后台hibernate的运行环境。(此处不再详述,本blog也将会有相关的文章介绍,也可以从网站下载中文文档);

   3)根据flex代码获取。 获取afuer_richLazyHibernate_flex.swc,放在自己的项目中。(注:此处采用Flex4.5sdk,可以直接换用其他的sdk编译)
  4)这样就可以使用Flex了,首先介绍使用LazyHttpService,这个类继承HttpService。使用方法如下所示:
    
 <rlh:LazyHttpService  id="httpService" url="http://localhost:8080/lazyBaseSpringDaoDemo/userView/list"
									   lazyObj="roles,organization"	 result="httpService_resultHandler(event)"/>

注:lazyObj="roles,organization" 为当前查询类的关联属性
5) 直接使用LazyDatagrid,继承自Datagrid:
    <rlh:LazyDatagrid id="lazyDatagrid"   y="50"  width="800" height="400">
			 <!--add columns ,the same as datagrid-->
			 <rlh:columns>
				 <mx:DataGridColumn dataField="username" headerText="User Name" />
				 <mx:DataGridColumn dataField="roles[0].name" headerText="Role Name" />
				 <mx:DataGridColumn dataField="roles[0].rescs[0].name" headerText="Resource Name" />
				 <mx:DataGridColumn dataField="organization.name" headerText="Org Name" />
			 </rlh:columns>
			 
			 <!--provided request Type json request, AMF request-->
			 <rlh:requestType>
				 <rlh:LazyHttpService  id="httpService" url="http://localhost:8080/lazyBaseSpringDaoDemo/userView/list"
									   	 result="httpService_resultHandler(event)"/>
			 </rlh:requestType>
		 </rlh:LazyDatagrid>

   6)再介绍使用LazyRemoteObject,继承自RemoteObject:
     
<rlh:LazyRemoteObject  endpoint="http://localhost:8080/lazyBaseBlazeDsDemo/messagebroker/amf"
								  id="reomoteObject"
								  destination="userService"
								  result="reomote_resultHandler(event)">
			</rlh:LazyRemoteObject>

   7)使用LazyDatagrid:
     
<rlh:LazyDatagrid id="lazyDatagrid"
					  y="50"
					  width="1000"
					  height="400">
		<!--add columns ,the same as datagrid-->
		<rlh:columns>
			<mx:DataGridColumn dataField="username"
							   headerText="User Name"/>
			<mx:DataGridColumn dataField="roles[0].name"
							   headerText="Role Name" itemRenderer="RoleItemRender"/>
			<mx:DataGridColumn dataField="roles[0].rescs[0].name"
							   headerText="Resource Name (AMF can't support this method, but hibernate loaded)"/>
			<mx:DataGridColumn dataField="organization.name"
							   headerText="Org Name"/>
		</rlh:columns>

		<!--provided request Type json request, AMF request-->
		<rlh:requestType>
			<rlh:LazyRemoteObject  endpoint="http://localhost:8080/lazyBaseBlazeDsDemo/messagebroker/amf"
								  id="reomoteObject"
								  destination="userService"
								  result="reomote_resultHandler(event)">
			</rlh:LazyRemoteObject>
		</rlh:requestType>
	</rlh:LazyDatagrid>

 
  
分享到:
评论

相关推荐

    当设置lazy=true时,怎样使用extjs和Hibernate

    标题"当设置lazy=true时,怎样使用ExtJS和Hibernate"所涉及的知识点主要集中在如何在ExtJS前端应用中与使用了懒加载特性的Hibernate后端进行交互。以下是对这个主题的详细解释: 1. **Hibernate懒加载**: - 懒...

    gilead hibernate lazyload例子

    在Flex中使用Gilead和Hibernate的懒加载,首先需要确保在Hibernate配置文件中对关联实体设置了懒加载属性。例如,如果有一个`User`类和一个`Address`类,`User`中包含一个`List&lt;Address&gt;`,那么在`User`的映射文件中...

    spring中lazy=“true”的正常读取关联表(用opensessioninview)

    `lazy="true"` 的使用场景通常是,当一个大型实体类中包含了很多关联的对象,而这些关联对象在大多数情况下并不需要立即加载。例如,一个用户对象可能关联了多个地址、订单等,如果在加载用户时一并加载所有关联数据...

    hibernate 中的lazy属性祥解.txt

    在Hibernate中,当设置关联属性的`fetch`或`lazy`属性为`true`时,表示该关联属性采用懒加载方式。这意味着,在获取主对象时,Hibernate不会立即加载与其关联的子对象。例如,在用户(User)与帖子(Post)之间的多...

    Hibernate延时加载与lazy机制.doc

    当我们将一个类或集合的`lazy`属性设置为`true`时,Hibernate会在需要时才去加载关联的对象,而不是在加载主对象时一并加载。这样可以避免不必要的数据库查询,提高性能。 **3. 错误和注意事项** 延迟加载可能导致...

    Hibernate延迟加载

    `lazy="true"`会在集合被访问时加载,`lazy="false"`会在加载实体时同时加载集合,而`lazy="extra"`提供更智能的加载策略,推荐在实际应用中使用。 4. 单端关联(One-to-one, many-to-one)的延迟加载:`...

    hibernate在集合上的lazy策略

    当我们声明一个集合为懒加载时,Hibernate会在映射文件(如.hbm.xml或使用注解)中配置`lazy="true"`。这样,Hibernate不会在初始化实体时加载整个集合,而是生成一个代理对象来代替真实的集合。当尝试访问这个代理...

    Hibernate lazy延迟加载

    **标题**: Hibernate懒加载(Lazy Loading) 在Java的持久化框架Hibernate中,懒加载(Lazy Loading)是一种重要的优化策略,它的核心思想是“延迟加载”或“按需加载”。默认情况下,当一个实体被加载时,并不会...

    Hibernate lazy加载FOR Connection

    在Hibernate中,懒加载是一种优化策略,它推迟对关联对象的加载,直到真正需要使用这些对象时才进行加载,而不是在加载主对象时一次性加载所有关联对象。这样可以提高程序的性能,因为减少了数据库的交互次数。 ...

    Dwr+Hibernate的Lazy问题

    在描述中提到的问题是,当使用DWR调用Hibernate查询方法时,控制台显示了大量的SQL语句,导致性能下降。这通常是由Hibernate的延迟加载机制失效引起的。延迟加载意味着关联的对象或集合只在真正需要时才进行数据库...

    hibernate的lazy策略forClass

    当我们定义这些关系时,如果不希望在加载父对象时立即加载子对象,可以设置`fetch`属性为` FetchType.LAZY`。例如: ```java @Entity public class Parent { @Id @GeneratedValue(strategy = GenerationType....

    hibernate延迟加载

    当使用 `session.load()` 方法加载实体时,Hibernate 并不会立即查询数据库,而是返回一个代理对象。这个代理对象包含必要的信息,以便在真正需要访问实体属性时再进行数据库查询。 ##### 示例代码 ```java User ...

    hibernate

    比如,当设置`lazy=true`时,只有在首次访问集合时才会触发加载,而在此之前不会执行任何数据库查询操作。同时,如果集合已经被初始化,则在后续的操作中,如添加、删除元素等,将不会导致额外的数据库操作。 #### ...

    hibernate 中 fetch=FetchType.LAZY 懒加载失败处理方法

    当我们在 Hibernate 中使用懒加载特性时,可能会遇到 LazyInitializationException 异常,这是因为 Hibernate 的 Session 生命周期太短,导致了懒加载失败。 为了解决这个问题,我们可以使用 Spring 提供的一个支持...

    hibernate 延迟加载.docx

    当使用Hibernate的`Session.load()`方法或在映射文件中设置了`lazy="true"`时,Hibernate并不会立即从数据库中获取关联对象的所有数据,而是创建一个代理对象。这个代理对象在需要访问其属性时才会执行实际的数据库...

    hibernate延迟加载解决

    要在Hibernate中启用实体对象的延迟加载,需要在映射文件中为相应的类添加`lazy="true"`属性,例如: ```xml &lt;class name="com.neusoft.entity.User" table="user" lazy="true"&gt; ... ``` **工作原理:** 当执行...

    Hibernate延迟加载介绍.doc

    在Hibernate中,实体对象的延迟加载可以通过在映射文件中设置`lazy="true"`来启用。例如,对于名为`com.neusoft.entity.User`的实体类,映射配置如下: ```xml &lt;Hibernate-mapping&gt; &lt;class name=...

    Spring IOC Bean标签属性介绍(教学视频+源代码)

    1.4 当 Scope="singleton" 且 lazy-init="true" 时 1.5 当scope="prototype"时 1.6 当scope="prototype" 且 lazy-init="true" 时 1.7 小结 1.8 depends-on 1.8.0 实体类JavaBean 1.8.0.1 Student类 1.8.1 配置文件都...

    Hibernate实战笔记

    - **Hibernate中的n+1查询问题**:当使用默认的立即检索策略时,Hibernate会在检索一个对象的同时检索其关联的所有对象。例如,在一个`Customer`与多个`Order`的关联关系中,如果数据库中有`n`个客户,则Hibernate将...

    hibernate的延迟检索在轻量级J2EE框架中的应用

    在Hibernate中,可以通过在实体的映射配置文件中设置`lazy="true"`来启用实体对象的延迟加载。 例如,对于一个User实体: ```xml &lt;hibernate-mapping&gt; &lt;class name=...

Global site tag (gtag.js) - Google Analytics