Flex在前台的强大表现让越来越多的公司愿意使用Flex技术来开发应用界面。而Hibernate在数据持久层的表现就更不必说了,可以说,如果想要使用Flex作为前台界面,J2EE作为后台技术,那么hibernate是许多公司必选的框架,但是在真正使用的时候,往往会发现一些不兼容问题导致的各种问题,例如如果使用了BlazeDs作为Flex的数据源通讯框架,则会发现hibernate的延迟加载功能失效了。
hibernate的延迟加载功能是为了解决性能问题而提出来的,而所谓的延迟加载就是在需要数据的时候才进行数据加载的操作,而在不需要数据的时候不去进行必要的数据查询从而极大的避免了不必要的性能开销。Hibernate可以对数据对象、集合甚至数据的延迟加载。尤其是在使用多对多关联时,由于对象中使用了大量的集合,这时延迟加载对于性能的提升很明显。
但是在使用BlazeDs与后台通讯时我们会发现Hibernate将所有的对象属性都一次性全部查出来了,延迟加载失效了。这是由于BlazeDs的工作原理导致的,由于Flex作为客户端与一般的jsp程序最大的区别是:Flex的所有通讯操作都是异步通讯操作,而jsp程序是同步通讯的。也就是说当我们打开一个jsp页面程序时,是由JSP在后台生成了一个HTML页面返回给浏览器而呈现的,这样当我们不需要一些实体中的数据时,我们不会遍历到它,而Hibernate也就不必去数据库查询数据,因此延迟加载有效。但是Flex的所有操作都是异步通讯的,当Flex通过BlazeDs取数据时,BlazeDs需要将Java对象转换为AS中的对象,这时BlazeDs会遍历Java方法返回的对象,这样当BlazeDs遍历到对象中的集合时,Hibernate会将没有取出的数据查询出,Hibernate的延迟机制也就失效了。
既然明白了导致问题的原因,解决它也就有办法了。现在市面上流行的两种开源包可以解决这个问题:Gilead和 dpHibernate都是解决Hibernate延迟加载的有效方法,两种开源包实现原理也基本相同,都是在BlazeDs对Java对象进行遍历的时候将无需加载的对象设为null。此外,还有另外一种更加简便的方法,由于大部分在开发Flex-Java程序的时候都会使用的开源包有:BlazeDs-Spring-Hibernate,因此大都还会使用到Spring开源社区的Spring BlazeDs Integration,在其最新发布的1.5里程碑版中,已经提供了Hibernate延迟加载的解决方案。
需注意的是:如果使用Spring BlazeDs Integration 1.5M 来解决Hibernate的延迟加载,需使用BlazeDs 4 才行。
相关推荐
介绍几种解决Flex 与 Hibernate 的延迟加载问题。我在实际项目中使用的是Gilead。
flex整合hibernate,spring,详细配置
这个实例是我看到得flex+hibernate 最经典的实例
FLex整合hibernate spring
Flex+Hibernate整合的学生成绩管理系统 Flex+Hibernate整合的学生成绩管理系统 Flex+Hibernate整合的学生成绩管理系统 Flex+Hibernate整合的学生成绩管理系统 实用实用实用实用实用实用
flexBulider页面加载动态图片的显示
Flex+hibernate+spring整合
flex spring hibernate经典例子,不用装数据库,数据库采用hsql mem形式,发布在tomcat下即可, flex前台, spring, hibernate后台,前后台分开,代码结构清晰!
flex3读书笔记----flex整合hibernate
spring-flex的hibernate4补丁
偌大的一个csdn竟然都没有发现一个完整的整合版flex,spring,hibernate。无奈之下自己经过一个半的努力实现了flex调用springAOP管理的java方法,项目中也有我写好的hibernate方法。
Flex Builder3+MyEclipse8.5搭建Flex Spring Hibernate环境,做了一个部署的文档,没步骤都是详细截图的。过一会会上传搭建出来的环境。
Flex + hibernate+sturts +lcd 增删查改1 还有个jar包 在后面叫 Flex + hibernate+sturts +lcd 增删查改2
Flex与Hibernate+Spring整合项目
flex与 struts2与 hibernate与spring集成实例项目
这个是一个完整的Flex与java通信的一个小例子,实现了增删改查功能,这只是一个小例子 有不妥当的地方希望能包涵。 涉及 技术:Flex+struts2+hibernate+mysql
NULL 博文链接:https://zhenghuazhi.iteye.com/blog/655368
Flex 延迟加载 问题说明 处理 实现
自己花了两天时间整理的flex+hibernate+spring整合demo可以直接使用,知识前台界面没有,显示的数据是从数据库查出来的 数据库只有一个表。
Flex整合Hibernate,spring和spring security 只有源代码,lib包太大了,没法上传! 我也只是初学,搞了十来天,有些也不是很懂! 有问题的话加我QQ:352457219