天天看點

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>

繼續閱讀