5.1.13. 组件(component), 动态组件(dynamic-component)

<component>元素把子对象的一些元素与父类对应的表的一些字段映射起来。 然后组件可以定义它们自己的属性、组件或者集合。参见后面的“Components”一章。

  1. <component
  2. name="propertyName"
  3. class="className"
  4. insert="true|false"
  5. update="true|false"
  6. access="field|property|ClassName"
  7. lazy="true|false"
  8. optimistic-lock="true|false"
  9. unique="true|false"
  10. node="element-name|."
  11. >
  12. <property ...../>
  13. <many-to-one .... />
  14. ........
  15. </component>
1name: 属性名
2class (可选 - 默认为通过反射得到的属性类型):组件(子)类的名字。
3insert: 被映射的字段是否出现在SQL的INSERT语句中?
4update: 被映射的字段是否出现在SQL的UPDATE语句中?
5access (可选 - 默认是 property): Hibernate用来访问属性的策略。
6lazy (可选 - 默认是 false): 表明此组件应在实例变量第一次被访问的时候延迟加载(需要编译时字节码装置器)
7optimistic-lock (可选 - 默认是 true):表明更新此组件是否需要获取乐观锁。换句话说,当这个属性变脏时,是否增加版本号(Version)
8unique (可选 - 默认是 false):表明组件映射的所有字段上都有唯一性约束

&lt;property&gt;子标签为子类的一些属性与表字段之间建立映射。

&lt;component&gt;元素允许加入一个&lt;parent&gt;子元素,在组件类内部就可以有一个指向其容器的实体的反向引用。

&lt;dynamic-component&gt;元素允许把一个Map映射为组件,其属性名对应map的键值。 参见第 8.5 节 “动态组件 (Dynamic components)”.