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语句中

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>


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值