`

第六章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>

 

 

分享到:
评论

相关推荐

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

    第6章 映射对象标识符  6.1 关系数据库按主键区分不同的记录  6.1.1 把主键定义为自动增长标识符类型  6.1.2 从序列(Sequence)中获取自动增长的标识符 6.2 Java语言按内存地址区分不同的对象 6.3 Hibernate用...

    Hibernate 3.6.0.Final Reference PDF 手册

    第 7 章 集合映射(Collection mappings) 第 8 章 关联关系映射 第 9 章 组件(Component)映射 第 10 章 继承映射(Inheritance Mapping) 第 11 章 与对象共事 第 12 章 Read-only entities 第...

    Hibernate3开发.pdf

    系统学习Hibernate3的开发...第六章:性能提升和二级缓存 包括:抓取策略、集合的性能、二级缓存、查询缓存、管理缓存 第七章:基本实现原理 包括:分增删改查的操作说明Hibernate基本的实现原理 第八章:最佳实践

    Java数据库技术详解 DOC简版

    第6章 JDBC的高级特性 6.1 PreparedStatement预编译对象 6.2 CallableStatement存储过程对象 6.3 BatchedUpdate对象 6.4 Rowset行集合对象 6.5 JDBC的事务 6.6 本章小结 第7章 JDBC结合Servlet与JSP ...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part4

    第6章 映射对象标识符  6.1 关系数据库按主键区分不同的记录  6.1.1 把主键定义为自动增长标识符类型  6.1.2 从序列(Sequence)中获取自动增长的标识符 6.2 Java语言按内存地址区分不同的对象 6.3 Hibernate用...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part3

    第6章 映射对象标识符  6.1 关系数据库按主键区分不同的记录  6.1.1 把主键定义为自动增长标识符类型  6.1.2 从序列(Sequence)中获取自动增长的标识符 6.2 Java语言按内存地址区分不同的对象 6.3 Hibernate用...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part1.rar

    第6章 映射对象标识符  6.1 关系数据库按主键区分不同的记录  6.1.1 把主键定义为自动增长标识符类型  6.1.2 从序列(Sequence)中获取自动增长的标识符 6.2 Java语言按内存地址区分不同的对象 6.3 Hibernate用...

    HibernateAPI中文版.chm

    6.3. 高级集合映射(Advanced collection mappings) 6.3.1. 有序集合(Sorted collections) 6.3.2. 双向关联(Bidirectional associations) 6.3.3. 双向关联,涉及有序集合类 6.3.4. 三重关联(Ternary ...

    hibernate3.2中文文档(chm格式)

    6.3. 高级集合映射(Advanced collection mappings) 6.3.1. 有序集合(Sorted collections) 6.3.2. 双向关联(Bidirectional associations) 6.3.3. 双向关联,涉及有序集合类 6.3.4. 三重关联(Ternary ...

    Hibernate实战(第2版 中文高清版)

     第6章 映射集合和实体关联   6.1 值类型的set、bag、list和map   6.1.1 选择集合接口   6.1.2 映射set   6.1.3 映射标识符bag   6.1.4 映射list   6.1.5 映射map   6.1.6 排序集合和有序集合  6.2 ...

    hibernate学习笔记

    第一个hibernate项目(hibernate_first) 2 测试实体对象的生命周期(hibernate_session) 3 hibernate基本映射(hibernate_basemapping) 4 class实体类---表 4 标签id 5 主键生成器Generator 6 多对一, 一对一, 一...

    Hibernate+中文文档

    6.3. 高级集合映射(Advanced collection mappings) 6.3.1. 有序集合(Sorted collections) 6.3.2. 双向关联(Bidirectional associations) 6.3.3. 双向关联,涉及有序集合类 6.3.4. 三重关联(Ternary ...

    Hibernate_3.2.0_符合Java习惯的关系数据库持久化

    6.3. 高级集合映射(Advanced collection mappings) 6.3.1. 有序集合(Sorted collections) 6.3.2. 双向关联(Bidirectional associations) 6.3.3. 双向关联,涉及有序集合类 6.3.4. 三重关联(Ternary ...

    Grails 技术精解与Web开发实践【源码+样章】----下载不扣分,回帖加1分,欢迎下载,童叟无欺

    第6章 用户注册与登录 63 6.1 表单验证与资源文件 63 6.2 用户注册 69 6.3 用户登录 73 6.3.1 登录的数据库查询 73 6.3.2 使用Session维持会话 74 6.3.3 自定义Codec实现对 密码加密 75 6.4 登录保护 76 6.5 本章小...

    Hibernate中文详细学习文档

    6.3. 高级集合映射(Advanced collection mappings) 6.3.1. 有序集合(Sorted collections) 6.3.2. 双向关联(Bidirectional associations) 6.3.3. 双向关联,涉及有序集合类 6.3.4. 三重关联(Ternary ...

    Hibernate 中文 html 帮助文档

    6.3. 高级集合映射(Advanced collection mappings) 6.3.1. 有序集合(Sorted collections) 6.3.2. 双向关联(Bidirectional associations) 6.3.3. 双向关联,涉及有序集合类 6.3.4. 三重关联(Ternary ...

    hibernate 体系结构与配置 参考文档(html)

    高级集合映射(Advanced collection mappings) 6.3.1. 有序集合(Sorted collections) 6.3.2. 双向关联(Bidirectional associations) 6.3.3. 双向关联,涉及有序集合类 6.3.4. 三重关联(Ternary ...

    Hibernate教程

    7.3. 高级集合映射(Advanced collection mappings) 7.3.1. 有序集合(Sorted collections) 7.3.2. 双向关联(Bidirectional associations) 7.3.3. 三重关联(Ternary associations) 7.3.4. 使用 7.4. 集合...

    最全Hibernate 参考文档

    6.3. 高级集合映射(Advanced collection mappings) 6.3.1. 有序集合(Sorted collections) 6.3.2. 双向关联(Bidirectional associations) 6.3.3. 三重关联(Ternary associations) 6.3.4. 使用 6.4. 集合例子...

Global site tag (gtag.js) - Google Analytics