集合映射(set, list, array,bag, map)详解

集合映射(set, list, array,bag, map)

一.在持久化类中,有时会使用到值类型的对象属性,如果持久化类中有一个值类型的集合,那么就需要一张额外的数据库表来保存这个值得类型集合数据,这张表被称为集合表。

1.    选择集合接口

Hibernate支持大部分重要的 JDK集合接口映射,主要有以下几种

1,<set>元素:它的元素存放没有顺序且不重复;

2,<list>元素:它需要在集合属性对应的数据库表中用一个额外的索引列保存每个元素的位置。

3,<bag>或者<idbag>元素:它的元素可能重复,但不保存顺序

4,<map>元素:它的元素以键值对的形式保存,也是无序的,它的元素可以按自然顺序排序

二.映射set,list,bag,map

1,持久化学生类;

public class Student {

    private int id;

    private String name;

    //private Set<String> hobbies;//爱好集合

    //private List<String> hobbies;

    private Map<Long,String> hobbies;

。。。。。。。。。。。。。。

    }

2.    它对应的对象关系映射文件Student.hbm.xml

  <hibernate-mapping

    package="com.hbsi.domain">

 

    <class name="Student" table="student">

       <id name="id"column="id">

           <generator class="native"/>

       </id>

       <property name="name"/>

       <!-- <setname="hobbies" table="student_hobby">

       //key子元素:指定集合属性对应的表的外键列

       <keycolumn="student_id"></key>

       //element子元素:映射集合内部的元素

       <element type="string"column="hobbies_name"></element>

       </set> -->

      

        <!-- <list name="hobbies" table="student_hobby">

      

       <key column="student_id"/>

       <list-index column="order_index"/>

       <element type="string"column="hobbies_name"> </element>

       </list>

        -->

        <!--  <bagname="hobbies" table="student_hobby">

      

       <key column="student_id"/>

 

       <element type="string"column="hobbies_name"> </element>

       </bag>

        -->

        

        <map name="hobbies" table="student_hobbies">

        <key column="student_id"/><!-- 外键 -->

        <map-key type="long" column="hobby_id"></map-key><!-- 建 -->

        

        <element type="string" column="hobbies_name"></element><!-- 值 -->

        

        </map>

      

      

      

    </class>

 

   

 

</hibernate-mapping>

 

 

三,排序集合和有序集合

  在实际开发中,经常要在集合中的元素是按一定要求排列好顺序后在返回给使用者的。

Student类;

public class Student {

    private int id;

    private String name;

    //private Set<String> hobbies;//爱好集合

    //private List<String> hobbies;

    private SortedSet<String> hobbies;

。。。。。。。。。。。。。。

    }

映射文件:

Sort属性:指定排序的规则。可选的值:unsorted(不排序),natural(按comparteTo()方法进行比较排序后排序),自定义的排序容器

 

<setname="hobbies" table="student_hobby" sort=”natural”>

       //key子元素:指定集合属性对应的表的外键列

       <key column="student_id"></key>

       //element子元素:映射集合内部的元素

       <element type="string"column="hobbies_name"></element>

       </set>

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值