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