<component>元素把子对象的一些元素与父类对应的表的一些字段映射起来。 然后组件可以定义它们自己的属性、组件或者集合。参见后面的“Components”一章。
<component name="propertyName" (1) class="className" (2) insert="true|false" (3) update="true|false" (4) access="field|property|ClassName" (5) lazy="true|false" (6) optimistic-lock="true|false" (7) unique="true|false" (8) node="element-name|." > <property ...../> <many-to-one .... /> ........ </component>
(1) | name: 属性名 |
(2) | class (可选 - 默认为通过反射得到的属性类型):组件(子)类的名字。 |
(3) | insert: 被映射的字段是否出现在SQL的INSERT语句中? |
(4) | update: 被映射的字段是否出现在SQL的UPDATE语句中? |
(5) | access (可选 - 默认是 property): Hibernate用来访问属性的策略。 |
(6) | lazy (可选 - 默认是 false): 表明此组件应在实例变量第一次被访问的时候延迟加载(需要编译时字节码装置器) |
(7) | optimistic-lock (可选 - 默认是 true):表明更新此组件是否需要获取乐观锁。换句话说,当这个属性变脏时,是否增加版本号(Version) |
(8) | unique (可选 - 默认是 false):表明组件映射的所有字段上都有唯一性约束 |
其<property>子标签为子类的一些属性与表字段之间建立映射。
<component>元素允许加入一个<parent>子元素,在组件类内部就可以有一个指向其容器的实体的反向引用。
<dynamic-component>元素允许把一个Map映射为组件,其属性名对应map的键值。 参见第 8.5 节 “动态组件 (Dynamic components)”.