Hibernate集合映射配置

1. Set映射
    <set name="映射的类的名字例如com.hibernate.Student" table="表名">
        <key>
             <column name="表中的外键名称"/>
        </key>
        <element column="你所需要的表中的字段名" type="映射类型"/>
    </set>

    例如父子表关系配置:

    <set name="childDesignTaskMain" cascade="none" inverse="true" lazy="false" fetch="select">
        <key column="designTaskMainIdParent" />
        <one-to-many class="com.targ.projectManager.designtask.domain.DesignTaskMain"/>
    </set>

2. List映射
    List映射用到的List是有顺序的结构,因此需要在所映射的表中设一个字段用于进行顺序标记,需在表中加入以下字

    段'Ind' int(10) unsigned default NULL
    <list name="映射的类的名字例如com.hibernate.Student" table="表名" inverse="false" 

            cascade="all" fetch="join">
           <key>
                <column name="cno"/>
           </key>
           <index column="Ind"/>
           <one-to-many class="对应的关联类的名字例如com.hibernate.Course"/>
    </list>

3. Bag映射
    Bag并不是Java中的接口,它是Hibernate提供的集合。Bag中可以有重复的元素,但是Bag中的元素没有顺序。
   <bag name="映射的类的名字例如com.hibernate.Student" table="" inverse="false" cascade="all">
          <key>
                 <column name="主键"/>
          </key>
          <one-to-many clas="对应的关联类的名字例如com.hibernate.Course">
   </bag>
   inverse="false",表示由一的一端维护级联操作;

   例如:

   <bag name="designTaskChildList" cascade="all" inverse="false" lazy="false" fetch="select">
         <key>
             <column name="designTaskMainId"></column>
         </key>
         <one-to-many class="com.targ.projectManager.designTaskChild.domain.DesignTaskChild"  

             not-found="ignore"/>
   </bag>

   在对应的关联类的配置文件要加入以下信息
   <many-to-one name="designTaskMain" class="com.targ.projectManager.designtask.domain

        .DesignTaskMain"not-found="ignore" insert="false" update="false" lazy="false"

        fetch="select">
        <column name="designTaskMainId" />
   </many-to-one>

   designTaskMain为该类中的变量名
   designTaskMainId为数据库中的属性名
   如果有大量的重复数据,<bag>标签的效率会比较低,它在更新数据时采用的是先删除要更新的数据,然后插入

   数据。使用<idbag>标签可以避免这种情况。

4. <idbag>

    首先在数据库中增加字段
    'bagid' int(10) unsigned default NULL COMMENT 'bagid'
    <idbag name="映射的类的名字例如com.hibernate.Student" table="" cascade="save-update">
          <collection-id column="bagid" type="integer">
               <generator class="increment"></generator>
          </collection-id>
          <key>
              <column name="id"/>
          </key>
          <element column="cname" type="string"/>
    </idbag>

    可参考:http://www.360doc.com/content/09/0210/22/18042_2510021.shtml
5. Map映射
    Map是JAVA的一个接口,它是一种重要的集合,它使用key/value方式存储数据;
    Map具有较高的存取性能,不允许存放重复的key值但允许有重复的value值;
    Map映射需要增加一个KeyName字段记录Key的值。
    <map name="映射的类的名字例如com.hibernate.Student' table="">
        <key column=""/>
        <intdex column="keyname" type="string"/>
        <element column="cname" type="string"/>
    </map>

6. 参考:http://www.blogjava.net/lyyb2001/archive/2008/12/10/245497.html

    http://ryxxlong.iteye.com/blog/626416

    http://hi.baidu.com/fytcm/blog/item/0e16a0332f399948ac4b5f0d.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值