Datagraph 模式

EJB 介体创建的 DataGraph 模式

查询的介体所创建的模式由每个查询语句的 Eclass 组成。Eclass 的名称是 Enterprise JavaBeans (EJB) 的抽象模式名称 (ASN)。Eclass 的 Eattribute 对应于查询语句返回的“容器管理的持久性”(CMP) 字段或表达式。

对于静态 DataObject,如果在 createMediator 调用上使用了 Map 自变量,那么 Eclass 名称可能不同。

在 FROM 或 XREL 子句中指定的每个 EJB 关系都会向模式中添加 Ereference。EJB 关系可以是单向的,也可以是双向的。但是,所有 Ereference 都定义为双向的,需要这样做才能在更新时有效地浏览 DataGraph。对于单向 EJB 关系,将生成反向关系名称。已生成名称的格式为 <ASName_source><ASName_target>。例如,如果 ASName 是 EmpBean 和 DeptBean,而单向关系是从 EmpBean 指向 DeptBean 的 dept,那么生成的反向名称为 DeptBeanEmpBean

如果 createMediator 上没有使用 ECLass 自变量,那么介体创建具有以下特征的 Datagraph 模式:
  • DataObject Eclass 名称是相应的 EJB 抽象模式名称 (ASN)
  • DataObject 属性名和类型是查询 SELECT 子句中的表达式名和类型
  • DataObject 引用来自 FROM 子句中引用的 EJB 关系的名称和类型。

还创建 Eclass name 为 DataGraphRootdummy DataObject,其中包含对所有 DataObject 的包含引用。使用 EJB ASN 名称的引用是多值的。

DataObject root =  m.getGraph( parms );
root.getType().getName();   // this would return the string "DataGraphRoot"

List depts = (List) root.get("DeptBean");   
// the list of all DeptBean SDOs in the DataGraph

List emps = (List) root.get("EmpBean");  
// the list of all EmpBean SDOs in the DataGraph

DataGraph 包含模式

服务数据对象 (SDO) 间的引用可定义为包含引用,在此情况下,当删除某个 SDO 时,此删除会级联所有包括的 SDO。同样,当将 Datagraph 序列化为 XML 文档时,包含的 SDO 嵌套在父 SDO 中。在 XML 文档中非包含的引用被表示为路径表达式。

包含必须在 Datagraph 模式中被定义。当介体定义模式时,根 SDO(名为 DataGraphRoot)包含所有其他 SDO。将 EJB 关系定义为非包含的 SDO 引用。

当调用者定义 Datagraph 模式时,有三种模式。
ROOT_CONTAINS_ALL
在此模式中,有一个伪 SDO 作为根 SDO。由于它不对应于任何 EJB,从这种意义上来说,它是一个伪 SDO。它的用途是要包含所有其他 SDO。如果介体生成了图模式,那么伪根具有类名 DataGraphRoot,并且它将具有名称为 EJB ASN 名称的包含引用。如果调用者使用静态模式,那么该根具有任何名称。该根的 Eclass 是通过 createMediator 调用传递的。
ROOT_CONTAINS_SOME
此模式仅适用于静态模式。也有一个作为图根的伪 SDO。其他 SDO 必须包含在与查询语句中所使用的 EJB 关系相对应的 Ereference 中,或者 SDO 必须包含在伪根中。
NO_DUMMY ROOT
此模式仅适用于静态模式。不存在伪根。根 SDO 对应于第一个查询语句,该语句必须只返回单个实例。非根 SDO 必须包含在与查询语句中所使用的 EJB 关系相对应的 Ereference 中。

指示主题类型的图标 参考主题



时间戳记图标 最近一次更新时间: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rejb_ejbmeddgs
文件名:rejb_ejbmeddgs.html