天天看点

EJB3的XML Schema第七讲

紧接上文:

<xsd:selector xpath="javaee:env-entry"/>

<xsd:field xpath="javaee:env-entry-name"/>

</xsd:unique>

</xsd:element>

</xsd:choice>

<xsd:attribute name="id" type="xsd:ID"/>

</xsd:complexType>

<!-- **************************************************** -->

<xsd:complexType name="entity-beanType">

<xsd:annotation>

<xsd:documentation>

entity-beanType 声明了一个实体bean。声明由以下内容组成:

- 可选的描述。

- 可选的显示名。

- 可选的图标元素,这个元素包含了一个小的和大的图标文件名。

- 一个分配到部署描述中企业bean 的唯一名称。

- 一个可选的mapped-name 元素,它可以被用于提供供应商特有的部署信息,

例如实体bean 远程home 接口的jndi-name。这个元素不要求所有的实现都支持它。使用这个元素的应用都是不可移植的。

- 实体bean 远程home 和remote 接口的名字,如果有的话。

-实体bean 本地home 和local 接口的名字,如果有的话。

- 实体bean 的实现类。

- 可选的实体bean 的持久化管理类型。如果没有指定这个元素,则缺省是容器。

- 实体bean 的主键类名。

- 实体bean 重入指示。

- 可选的实体bean cmp-version 规范。

- 可选的实体bean 抽象schema 名字规范。

- 可选的容器管理字段的列表。

- 可选的主键字段规范。

- 可选的bean 环境条目声明。

- 可选的bean 的EJB 引用声明。

- 可选的bean 的本地EJB 引用声明。

- 可选的bean 的web 服务引用声明。

- 可选的安全角色引用声明。

- 可选的用于bean 方法执行的安全标识声明。

- 可选的bean 资源管理器连接工厂引用声明。

- 可选的bean 的资源环境引用声明。

- 可选的bean 的消息目的地引用声明。

- 可选的用于finder 和select 方法的查询声明集,这些方法是用于cmp-version 2.x 的实体bean。

必须为使用容器管理持久化和cmp-version 2.x 的实体bean 指定可选的abstract-schema-name 元素。

如果实体的持久化类型是容器,那么在部署描述中可以出现可选的primkey-field。

如果实体的persistence-type 是容器(Container),那么在部署描述中可以

出现可选的cmp-version 元素。如果persistence-type 是Container,且没有指定cmp-version,那么它的值缺省是2.x。

如果实体bean 的cmp-version 是1.x,那么必须指定可选的home 和remote元素。

如果实体bean 有远程home 和remote 接口,那么必须指定可选的home 和remote 元素。

如果实体bean 有本地home 和local 接口,那么必须指定可选的local-home和local 接口。

必须同时指定local-home 和local 元素,或home 和remote 元素。

如果persistence-type 是Container 且cmp-version 是2.x,同时已经为实体bean定义了除了findByPrimaryKey 方法以外的其他查询方法,那么必须指定可选的query 元素。

其他的可选元素,如果它们出现为空则忽略他们。

如果persistence-type 是Container 且cmp-version 是1.x ,那么至少指定一个cmp-field 元素。如果persistence-type 是Bean,则可以不出现cmp-field 元素。

</xsd:documentation>

</xsd:annotation>

<xsd:sequence>

<xsd:group ref="javaee:descriptionGroup"/>

<xsd:element name="ejb-name" type="javaee:ejb-nameType"/>

<xsd:element name="mapped-name" type="javaee:xsdStringType" minOccurs="0"/>

<xsd:element name="home" type="javaee:homeType" minOccurs="0"/>

<xsd:element name="remote" type="javaee:remoteType" minOccurs="0"/>

<xsd:element name="local-home" type="javaee:local-homeType" minOccurs="0"/>

<xsd:element name="local" type="javaee:localType" minOccurs="0"/>

<xsd:element name="ejb-class" type="javaee:ejb-classType"/>

<xsd:element name="persistence-type" type="javaee:persistence-typeType"/>

<xsd:element name="prim-key-class" type="javaee:fully-qualified-classType">

<xsd:annotation>

<xsd:documentation>

prim-key-class 元素包含了实体bean 主键类的全称。如果主键类的定义在部署时被改变,那么prim-key-class 元素应当被指定为java.lang.Object.

</xsd:documentation>

</xsd:annotation>

</xsd:element>

<xsd:element name="reentrant" type="javaee:true-falseType">

<xsd:annotation>

<xsd:documentation>

Reentrant 元素指定了实体bean 是否是可重入的。Reentrant 元素必须是true或false。

</xsd:documentation>

</xsd:annotation>

</xsd:element>

<xsd:element name="cmp-version" type="javaee:cmp-versionType" minOccurs="0"/>

<xsd:element name="abstract-schema-name" type="javaee:java-identifierType" minOccurs="0">

<xsd:annotation>

<xsd:documentation>

abstract-schema-name 元素指定了使用cmp-version 2.x 的实体bean 的抽象schema 类型的名称。它用于EJB QL 查询。例如,用于一个本地接口是com.acme.commerce.Order 的实体的abstract-schema-name 是 Order.

</xsd:documentation>

</xsd:annotation>

</xsd:element>

<xsd:element name="cmp-field" type="javaee:cmp-fieldType" minOccurs="0" maxOccurs="unbounded"/>

<xsd:element name="primkey-field" type="javaee:string" minOccurs="0">

<xsd:annotation>

<xsd:documentation>

primkey-field 元素用于指定使用容器管理持久化的实体bean 的主键字段名称。

primkey-field 必须是声明在cmp-field 元素中的字段,且这个字段类型必须和主键类型一致。

如果主键映射到多个容器管理的字段(也就是,主键是组合主键),则不使用primkey-field 元素。在这种情况下,主键类的所有字段必须是public 的,且他们的名字必须对应于组成主键的实体bean 的字段名。

</xsd:documentation>

</xsd:annotation>

</xsd:element>

继续阅读