第六章Hibernate-的集合映射

第六章Hibernate-的集合映射

  • Set映射
  • List映射
  • Bag映射
  • IdBag映射
  • Map映射
  • 集合映射的排序
  1.            利用<set>或<map>标签的sort属性排序
  2.            利用SQL的order by子句排序
  • set接口

     Set类型的对象,被加入的对象不能重复 ,同时被加入的对象也没有固定的顺序。

  1.        HashSet实现(使用Hash算法,速度最快)
  2.        LinkedHashSet 实现(存储的对象顺序固定)
  3.        TreeSet实现(被保存的对象类型需要实现Comparable接口,可以实现排序)
  •    set映射

      定义一个代表用户的User类,User类中,使用Set对象保存用户的多个email地址。

-- Create table
create table users1
(
  username varchar2(40) not null,
  password varchar2(40),
  id       number(8)
)
;
-- Create/Recreate primary, unique and foreign key constraints 
alter table users1
  add constraint users1_pk primary key (ID);

 

  •  List 映射
 <list name="emails" table="email">
<key column="userid" foreign-key="id" />
<index column ="idx" type="java.lang.Integer"/>
<element column="email" type="java.lang.String"></element>
 </list>
  •  Bag映射
  1.         Bag对象允许重复的元素,但是不记录添加对象的先后顺序
  2.       JDK中并没有提供Bag集合类型,Hibernate中Bag映射使用的是自己的Bag类型 对应的是 Hibernate 中org.hibernate.collection.PersistentBag类型
  <bag name="emails" table="email">
        	<key column="userid" foreign-key="id"></key>
        	<element type="java.lang.String" column="email"></element>
        </bag>
  •    Id Bag映射

    Bag集合映射的一种扩展,Hibernate框架还提供了IdBag映射,可以在定义Bag映射时,为每个加入的对象指定"id"

  •  Map接口
  1.        Map对象中保存的是key/value形式的一对对象,key与value都是Object类型的变量,key与value是一一对应的关系,key值不能重复。
  2.          HashMap
  3.          LinkedHashMap
  4.          TreeMap
  •  Map映射
  1.       集合映射的排序
  2.       利用<set>或<map>标签的sort属性对集合中的数据进行排序
  3.       利用SQL的order by子句排序
  <map name="phone" table="phone">
            <key column="userid" foreign-key="id" />
			<map-key column ="usage" type="java.lang.String"/>
			<element column="phone_number" type="java.lang.String"></element>
        </map>

  排序

   natural(在内存中排序)数量少时,可以这样排序,

<map name="phone" table="phone" sort="natural">
            <key column="userid" foreign-key="id" />
	    <map-key column ="usage" type="java.lang.String"/>
	    <element column="phone_number" type="java.lang.String"></element>
</map>

    order-by="phone_number"指定按数据库中的哪个字段排序

  <map name="phone" table="phone" order-by="phone_number">
         <key column="userid" foreign-key="id" />
	<map-key column ="usage" type="java.lang.String"/>
	<element column="phone_number" type="java.lang.String"></element>
  </map>

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值