注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

IOS & JAVA KEY

(iMilo)

 
 
 

日志

 
 
关于我

All the splendor in the world is not worth a good friend!! Hello my friend!!

网易考拉推荐

EOS开发小结②  

2010-08-19 11:41:06|  分类: EOS |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

深入EOS开发

单向N:1关联

l  N端实体用于关联的属性可以是主键也可以是非主键,1端的关联字段必须是主键(可以是单主键也可以是复合主键)。

l  当在N端选择了用于关联的属性,那么这些属性在N端实体中式不存在的,且不可访问 ,会用11端实体代替。当要访问N端这些属性的值的时候,需要操作1端实体的主键属性才可以。

l  单向N1关联式支持延迟加载的。如果设置延迟加载为FALSE,表示不支持延迟加载,那么会在查询N端实体的时候同时查询1端的实体,查询时是用一句join sql查询;如果设置延迟加载为TRUE,表示支持延迟加载,则先是查询出所有N端实体,然后根据N端的关联属性去查询1端的实体

 

EOS的数据服务引擎会自动产生关联查询操作,如果关联关系的两张表的数据量都超过百万级以上的数据,不建议采用自动加载关联实体的发方式。如果1端的数据在十万级以内的数据量,这种操作对系统性能影响会非常小。

 

单向1:N关联

l  1端的关联字段必须是主键(可以是单主键也可以是复合主键)。N端必须要选择相同个数的列和1端主键匹配。

l  单向1N的关联,可以通过1端的实体对象访问到N端的实体对象,但是无法通过N端的实体对性访问到1端的实体对象。

l  单向1N是支持延迟加载的,如果延迟加载设置为false,表示不支持延迟加载,那么会先用一条sql查询出1端实体,然后根据1端的实体的主键查询出关联的N端实体,这样就会产生1+Nsql查询(这里是否有错误?不是然后,而是同时吧??)

说明:在单向1N的关联连线上“加载关联实体”选择“false”,表示不支持延迟加载;选择“true”,表示支持延迟加载。

注意:在定义1N的关联关系的时候,关联关系连线中的“加载关联实体”的属性需要设置为“true”,因为1àn关系中n端的数据量时未知的,如果选择了“false”,每次做1端数据查询的时候都会自动加载n端的数据使得查询性能缓慢。

NOTICEEOS中的延迟加载????)

实体查询

l  可以对不同类型的数据库指定查询的sql语句或者视图名称,因为每种数据库sql语法有差异,并且也不是每种数据库都支持视图。但是必须指定一个default类型的配置,因为EOS6会在运行时根据数据库连接自动判断数据库类型,然后根据对该种类型的数据库配置来获取数据,如果没有找到对该种数据库的配置,则使用default类型的配置。

l  查询实体里面不能定义属性名为id的属性,这个是保留关键字。

l  查询实体只支持SDO的数据对象。

l  同一数据集合中查询实体名称具有唯一性。

l  查询实体只能用于查询,不可以对其执行增删改的操作。

l  入股指定的查询sql语句或视图中有两个相同的列名,需要起不同的别名来区分。

说明:查询视图允许用户通过指定的某一列或几列的值来做为时实体的主键,如果用户没有指定,EOS6会自动使用一个常量来做为该查询实体的主键。但是入股用默认的常量做为主键,就不要用持久化实体和该查询实体做单向1:1关联和单向N1关联,否则对该持久化实体做操作会抛异常。

 

MUO数据上下文

l  MUO数据上下文包含一些动态的属性和隐含的用户数据对象。

l  动态的属性是用户在构造受管理用户数据上下文时候指定的,包括属性的名称和属性的类型。其中属性的数据类型是这样的格式,以java:或者sdo:开头,后面是类型名称;在创建受管理用户上下文时,系统会自动把该属性从HttpSession中取出,设置到受管用户数据上下文中。

l  隐含的用户数据对象时一个名称为userObject,类型为com.eos.data.datacontext.IUserObject的对象,可以在MUO上下文中根据属性userObject得到该隐含的用户数据对象。

说明:MUO数据对象不能再逻辑流中通过Xpath来创建、删除、增加对象,可以通过EOS Governor来配置。

 

页面流级别变量(简称flow级别变量)

l  一个一面流在包含多个Action的情况下,一个Action在运行过程中可能希望跟另外一个Action共享数据,可以通过Flow级别变量来共享数据。

l  页面流级别变量存放在页面流上下文中。

l  在该页面流的任意一个图元中,或者连线的简单条件中可以通过带“f:”前缀的xpath来访问flow级别变量。

l  对于需要传递flow级别变量的页面使用h:form或者使用特定的tag在页面中保持flow级别变量。

说明:页面流级别的变量,会别序列化并编码成一个字符串,这个字符串需要保持到浏览器端,下次请求的时候需要再传回这个字符串,h:form标签会自带name=”_eosFlowDataContext”的隐藏域来存放这个字符串,如果不用h:form标签,需要自己手工设置。

l  有两种方式可以给页面流级别变量赋值:

     页面数据直接提交打flow级别变量中,只要页面提交奥参数的名称(xpath)与flow级别变量的名称匹配,则该数据会被直接赋值给flow级别变量(或者flow级别变量的属性)。

     在页面流中通过赋值图元/调用图元的返回值等可以给flow级别变量设置值。

注意:页面流级别的变量会影响到性能,不推荐过多使用。

 

普通连线的条件信息:

     简单表达式:由三部分组成,左值、比较操作符、右值。

l  左值:左值为一个Xpath,该Xpath节点下的值将与右值进行关系运算。

l  比较操作符:==(等于)、>=(大于等于)、>(大于)、<(小于)、<=(小于等于)、!=(不等于)、ObjNotEqual(通过Java对象的equals方法判断不相等)、ObjEqual(通过Java对象的equals方法判断相等)、IsNull(对象是空对象)、NotNull(对象不是空对象)、NullOrEmpty(对象时空对象或者不是空对象且值为空)、NotNullAndEmpty(对象非空对象并且值不为空)。

l  右值:右值类别可以选择常量或者变量,当为变量的时候,右值为一个Xpath,该Xpath节点下的值与左值进行关系运算。

     Java表达式:为一个遵循Java语法规则的布尔表达式。

  评论这张
 
阅读(1199)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017