extjs是早期富客户用的比较多的框架,目前大家也都在使用。Hibernate是目前大部分公司都在使用的ORM映射工具。本来他们之间没有什么联系,但当他们结合在一起时就会出现各式各样的问题。如果你正在使用Hibernate和extjs,关注一下这篇文章应该对你大有益处。
1)从http://code.google.com/p/rich-hibernate-lazy/downloads/list 下载相关的文档和jar文件。
注:后台如何搭建,请参照里面的中文文档,如果还不明白,请参照demo,这里只介绍前台extjs如何搭建。
2)下载extjs,并放在相应的目录,同时把css和js文件添加到相应的目录,如下所示:
<link href="../js/extjs/resources/css/ext-all.css" rel="stylesheet"
type="text/css" />
<script src="../js/extjs/ext-all.js" type="text/javascript">
</script>
3)添加lazyHibernate,开源并且没有添加版权的的js文件,代码如下所示:
<script type="text/javascript"
src="../js/afuer/lazyHibernate_js_base.js">
</script>
<script type="text/javascript"
src="../js/afuer/lazyHibernate_extjs_base.js">
</script>
4)添加跟后台对应的model类:
Ext.define('User', {
extend : 'Ext.data.Model',
fields : [ {
name : 'id',
type : 'int'
}, {
name : 'username',
type : 'string'
}, {
name : 'roles<0>_name',
type : 'string'
}, {
name : 'organization_name',
type : 'string'
} ]
});
注: roles<0>_name 表达的是关联关系,roles[0].name
5)添加extjs的特殊的store存储类:
var store1 = Ext.create('Ext.data.Store', {
model : 'User',
autoLoad : true,
proxy : Ext.create('LazyHibernate.LazyAjax', {
url : "listForExtjs"
})
});
注: 'LazyHibernate.LazyAjax' 为lazyHibernate创建。
6)把store给datagrid panel即可:
var grid = Ext.create('Ext.grid.Panel', {
renderTo : Ext.getBody(),
store : store1,
width : 1000,
height : 200,
title : 'Show users with Lazy Hibernate in ExtJS',
columns : [ {
text : 'Name',
width : 100,
sortable : false,
hideable : false,
dataIndex : 'username'
}, {
text : 'ID ',
flex : 1,
dataIndex : 'id'
}, {
text : 'roleName, field base on roles<0>_name ',
flex : 1,
dataIndex : 'roles<0>_name'
}, {
text : 'roleName, field base on roles[0].name',
flex : 1,
dataIndex : 'roles[0].name'
}, {
text : 'Org Name, field base on organization_name',
flex : 1,
dataIndex : 'organization_name'
}
]
});
注:这样extjs不但可以使用懒加载,而且datagrid可以直接使用关联关系的属性。甚至1对多都可以用。因为RichLazyHibernate为顶端架构,所以看起来好像步骤有些多,如果你对Hibernate和extjs很熟悉,则觉得这部分代码异常简单,只需要配置一下就可以使用。代码位于demo的/userview/base_extjs_test1.jsp 中,本文的代码见附件
分享到:
相关推荐
Hibernate延时加载与lazy机制.docHibernate延时加载与lazy机制.doc
hibernate 中的lazy属性的使用
NULL 博文链接:https://likenice.iteye.com/blog/290162
Hibernate 的 lazyload 在FLEX中的解决方法例子 用的是gilead 因为LIB包太大上传很慢所以被我删掉了。
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 配置文件都...
Dwr+Hibernate的Lazy问题 解决了Hibernate延迟加载失效问题
当inverse设为true时,通过父亲增儿子时,必须建立双向关系. Session的一级缓存:(相当于一系列的map容器,它是需要维护的) 1. 提高效率 2. 维护缓存中的对象和数据库中对应表的记录之间进行同步 3. 当一级缓存...
当删除对象时, Hibernate必须使用每一个字段的值来确定一条记录(在组合元素表中,没有单独的关键字段), 如果有为null的字段,这样做就不可能了。你必须作出一个选择,要么在组合元素中使用不能为空的属性,要么...
NULL 博文链接:https://xuwoool.iteye.com/blog/1306207
Hibernate fetch lazy cascade inverse 关键字
session.Flush() 强制数据库立即同步,当用事务时,不必用flush,事务提交自动调用flush 在session关闭时也会调用flush <br>4. Hibernate总是使用对象类型作为字段类型 5. XDoclet专门建立了...
Hibernate中Cascade和inverse的区别,讲解的很详细
Hibernate 的延迟加载(lazy load)是一个被广泛使用的技术。这种延迟加载保证了应用只有在需要时才去数据库中抓取相应的记录。通过延迟加载技术可以避免过多、过早地加载数据表里的数据,从而降低应用的内存开销。...
<hibernate-mapping> <class name="com.hibernate.model.SystemClassInfo" table="system_class_info" schema="dbo" catalog="db_school"> <id name="classid" type="java.lang.String"> <column name="classid" ...
博文链接:https://llying.iteye.com/blog/221700
博文链接:https://llying.iteye.com/blog/221699
16.3.2 延迟检索(lazy属性为默认值“true”) 16.3.3 增强延迟检索(lazy属性为“extra”) 16.3.4 批量延迟检索和批量立即检索(使用batch-size属性) 16.3.5 用带子查询的select语句整批量初始化orders...
以上所有实体使用 JOINED 策略 Ferry和Boat class使用同名的主键关联(eg: Boat.id = Ferry.id), AmericaCupClass 和 Boat 关联的条件为 Boat.id = AmericaCupClass.BOAT_ID. 从父类继承的属性 @MappedSuperclass ...
在搭建单元测试环境时,需要使用的 Jar 包有 junit4.jar 和 struts2-junit-plugin-2.1.8.jar。junit4.jar 是 Eclipse 自带的,可以在项目路径中导入。struts2-junit-plugin-2.1.8.jar 是 Struts2 提供的测试插件,...