读书人

第六章Hibernate-的会合映射

发布时间: 2012-11-17 11:14:14 作者: rapoo

第六章Hibernate-的集合映射

第六章Hibernate-的集合映射

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

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

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

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

-- Create tablecreate 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映射
    ? ? ? ? Bag对象允许重复的元素,但是不记录添加对象的先后顺序??? ? 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>
??IdBag映射

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

?Map接口
    ?????? Map对象中保存的是key/value形式的一对对象,key与value都是Object类型的变量,key与value是一一对应的关系,key值不能重复。???????? HashMap ???????? LinkedHashMap???????? TreeMap
?Map映射
    ????? 集合映射的排序????? 利用<set>或<map>标签的sort属性对集合中的数据进行排序????? 利用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>

?

?

读书人网 >软件架构设计

热点推荐