You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

咨询Entity Metadata Descriptor XML文件及相关术语的用途与示例

Entity Metadata Descriptor XML 详解(IBM WebSphere eXtreme Scale 8.6.1)

一、文件核心定义

这是IBM WXS里用来绑定业务实体与存储结构的配置文件——简单说,就是告诉WXS你的Java对象(比如User、Order类)该怎么序列化、怎么对应到数据库/网格存储的字段,让WXS能正确存、取这些对象。

二、核心术语用途与示例

1. id 属性

  • 用途:给每个实体配置分配唯一ID,WXS内部用它区分不同的实体规则,避免配置冲突,后续关联其他实体时也会用到这个ID来引用。
  • 示例:
<entity-metadata id="userEntity" class-name="com.example.User">
  <!-- 其他配置 -->
</entity-metadata>

这里userEntity就是这个用户实体配置的唯一标识,后面订单实体关联用户时,就可以用这个ID来引用。

2. basic 元素

  • 用途:处理实体的简单属性(比如String、Long、Date这类),把Java类里的属性名对应到存储的字段名,同时指定类型映射规则。
  • 示例:
<basic name="username" column="USER_NAME" type="java.lang.String"/>

这段配置把User类里的username属性,映射到存储中的USER_NAME字段,类型是String。

3. element 元素

  • 用途:处理实体里的集合属性(比如List、Set)或者嵌套的简单对象,定义集合的类型和元素的映射规则。
  • 示例:
<element name="roles" collection-type="java.util.Set">
  <basic type="java.lang.String"/>
</element>

这里把User类里的roles Set属性映射成存储中的字符串集合,WXS会按这个规则序列化整个集合。

4. class id(实体类标识)

  • 用途:指定当前配置对应的Java业务类的全限定名,让WXS知道要处理的对象类型,是实体配置的核心标识。一般对应<entity-metadata>的class-name属性,或者在关联其他实体时用target-entity-id引用已定义的实体ID。
  • 示例:
<entity-metadata id="orderEntity" class-name="com.example.Order">
  <!-- 关联用户实体 -->
  <many-to-one name="user" target-entity-id="userEntity"/>
</entity-metadata>

这里class-name="com.example.Order"就是订单实体的class id,指定了对应的Java类;target-entity-id="userEntity"则引用了之前定义的用户实体的ID,实现实体间的关联。

三、完整示例文件

<?xml version="1.0" encoding="UTF-8"?>
<entity-metadata-set xmlns="http://ibm.com/ws/objectgrid/metadata/xml">
  <!-- 用户实体配置 -->
  <entity-metadata id="userEntity" class-name="com.example.User">
    <id name="userId">
      <basic column="USER_ID" type="java.lang.Long"/>
    </id>
    <basic name="username" column="USER_NAME" type="java.lang.String"/>
    <basic name="email" column="USER_EMAIL" type="java.lang.String"/>
    <!-- 映射角色集合 -->
    <element name="roles" collection-type="java.util.Set">
      <basic type="java.lang.String"/>
    </element>
  </entity-metadata>

  <!-- 订单实体配置 -->
  <entity-metadata id="orderEntity" class-name="com.example.Order">
    <id name="orderId">
      <basic column="ORDER_ID" type="java.lang.String"/>
    </id>
    <basic name="orderTime" column="ORDER_TIME" type="java.util.Date"/>
    <basic name="totalAmount" column="TOTAL_AMOUNT" type="java.math.BigDecimal"/>
    <!-- 关联用户实体 -->
    <many-to-one name="user" target-entity-id="userEntity" column="USER_ID"/>
  </entity-metadata>
</entity-metadata-set>

内容的提问来源于stack exchange,提问作者AutumnWind

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 06:25:22