<component/>是NHibernate中一个有趣的特性,即是用来映射DDD(Data-Display-Debuger)概念形式的值类型。这是一种创建比物理数据模型具有更高粒度的对象模型的方式。
举例,
看下表中的数据:
对应的对象模型:
它们十分不同,在一个单一表中包括了所有物理数据,我们想在对象模型中调整为用两个分离的类型来映射该表。这就是<component/>的用法:
<
class
name
="Person"
table
="People"
>
< id name ="Id" >
< generator class ="identity" />
</ id >
< property name ="Name" />
< component name ="Address" >
< property name ="Line1" />
< property name ="Line2" />
< property name ="City" />
< property name ="Country" />
< property name ="ZipCode" />
</ component >
</ class >
< id name ="Id" >
< generator class ="identity" />
</ id >
< property name ="Name" />
< component name ="Address" >
< property name ="Line1" />
< property name ="Line2" />
< property name ="City" />
< property name ="Country" />
< property name ="ZipCode" />
</ component >
</ class >
这个映射将会在物理数据模型和对象模型中转换。我们还可以让NHibernate对<component>进行排序并给我们所预期的对象图。