咨询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
相关产品推荐
相关产品推荐

