Hibernate集合属性映射

1. 整体思路

       在java的pojo类中存在集合类的对象,那么集合中的元素必须要有一个地方存储,这个地方显然就是另外一张表。而且必须和这张集合表相关联,所以集合表中必然会存在一个字段和pojo映射表中主键关联。

2. Set映射

        2.1 pojo中属性

         private Set<String> addressSet = new HashSet<String>();

        2.2 映射文件

      <set name="addressSet" table="user_address_set">
          <key column="userId"/>
          <element type="string" column="address"/>
</set>
 
           说明:
                1) 因为属性是Set类型,所以使用set标签
                2) 需要设置集合表,表名在table中设置
                3) key用来指定和主表主键相关联的字段
                4)element标签用来指定集合中的值用哪个字段存储,必须指定类型

         2.3  生成的表

               
               
              

             

3. List映射

        3.1 pojo中属性

         private List<String> addrList = new ArrayList<String>();

        3.2 映射文件    

        <list name="addrList" table="user_addr_list">
              <key column="userId"/>
              <index column="idx"/>
              <element column="address" type="string"/>
        </list>

          说明:
                1) 因为属性是List类型,所以使用list标签
                2) 需要设置集合表,表名在table中设置
                3) key用来指定和主表主键相关联的字段
                4)element标签用来指定集合中的值用哪个字段存储,必须指定类型
                5)因为List有序,需要保存顺序,所以必须要添加index字段,用index标签来指定下标的字段

           3.3 生成的表

                 

                

4. Map映射

          4.1 pojo中的属性

          private Map<String,String> addrMap = new HashMap<String, String>();

          4.2  映射文件

          <map name="addrMap" table="addr_map">
                <key column="userId"/>
                <map-key column="postCode" type="string"/>
                <element type="string" column="addr"></element>
          </map>

         说明:
                1) 因为属性是Map类型,所以使用map标签
                2) 需要设置集合表,表名在table中设置
                3) key用来指定和主表主键相关联的字段
                4)element标签用来指定集合中的值用哪个字段存储,必须指定类型
                5)map-key用来指定Map中的key对应的字段

           4.3 生成的表


                  

                  

                  

4. bag映射

        4.1  说明

               因为:Set——无序、无重复    List——有序、有重复,所以需要一个无序、有重复的集合来存储数据

        4.2  pojo中属性

        private List<String> addrBag  = new ArrayList<String>();
              因为java中没有bag集合类型,所以使用List来代替

        4.3  映射文件

        <bag name="addrBag" table="addr_bag">
              <key column="uid"/>
              <element type="string" column="addr"/>
        </bag>
          说明:因为bag无序,所以映射文件基本和set一致

        4.4  生成的表

             
              

5. 总结

     1)不管使用什么集合,都需要另外一张表来存储集合中数据
     2)使用什么集合,标签就为那种集合的名称(如List对应标签就为list)
     3)因为集合表一定需要与主表关联,所以集合标签中一定有一个key,用来指定集合表中和主表关联的字段
     4)element元素用来存储集合中数据,需要指定类型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值