Hibernate映射文件之映射组件属性

Hibernate如何保存组件属性?

对于组件中基本数据类型及其包装类型、String、Date类型的属性,Hibernate会把每个属性映射成一个数据列。

对于组件中数组、集合类型的属性,Hibernate会把每一个集合属性映射成一张单独的从表,并通过外键与主表相关联。

 

Hibernate使用<component/>元素映射组件属性

<component name="name" class="org.lgy.hibernate.pojos.Name" access="" 
           insert="true" update="true" lazy="false" optimistic-lock="true" unique="false">

</component>

 

name:组件属性的名称

class:组件类的类名

access:该组件属性的访问策略,field或property

insert:被映射的字段是否出现在SQL的insert语句中

update:被映射的字段是否出现在SQL的update语句中

扫描二维码关注公众号,回复: 1179653 查看本文章

lazy:是否启用延迟加载

optimistic-lock:更新该组件属性时是否需要获取乐观锁,如果设置为true,则当修改该组件属性时,持久化对象的版本号会增加

unique:是否在该组件映射的所有字段上添加唯一性约束

 

1、映射组件中基本数据类型及其包装类型、String类型、Date类型的属性

Hibernate使用<property/>元素映射此类型的属性,具体使用请参见《Hibernate映射文件之映射普通属性》

<component name="name" class="org.lgy.hibernate.pojos.Name">
        <property name="firstName" type="string" column="first_name" length="100"/>
        <property name="lastName" type="string" column="last_name" length="100"/>
</component>


 

2、映射组件中数组、集合类型的属性

映射组件类中的集合属性与映射持久化类的集合属性完全相同,请参见《Hibernate映射文件之映射集合属性》

<component name="name" class="org.lgy.hibernate.pojos.Name">
        <list name="formerNames" table="former_name">
        	<key column="person_id" not-null="true"/>
        	<list-index column="list_index"/>
        	<element column="name" type="string" length="100"/>
        </list>
</component>


 

3、映射组件中组件类型的属性

对于这种类型的属性,依然使用<component/>元素进行映射,也就是说,在<component/>元素中再次使用<component/>元素进行映射。

具体如何使用<component/>元素,请参阅本文。

<component name="name" class="org.lgy.hibernate.pojos.Name">
    <component name="netName" class="org.lgy.hibernate.pojos.NetworkName">
        <property name="firstNetName" type="string" column="first_net_name" length="100"/>
        <property name="lastNetName" type="string" column="last_net_name" length="100"/>
    </component>
</component>


 

猜你喜欢

转载自guoying252166655.iteye.com/blog/2070878