`

第六章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-release-5.0.7.Final的所有jar包

    Hibernate是Java领域中一款著名的对象关系映射(ORM)框架,它允许开发者使用面向对象的方式来操作数据库,极大地简化了数据库编程。在这个`hibernate-release-5.0.7.Final`版本中,包含了所有相关的jar包,为开发者...

    hibernate-3.3.2.GA-jar包集合

    Hibernate 是一个开源的对象关系映射(ORM)框架,它允许开发者使用面向对象的编程语言(如Java)来处理数据库操作,极大地简化了数据库应用程序的开发。在这个“hibernate-3.3.2.GA-jar包集合”中,我们聚焦的是...

    hibernate-release-4.2.4.Final.zip

    6. **配置与使用**:在项目中使用Hibernate,首先需要在项目的类路径中添加相关的JAR包,然后配置Hibernate的主配置文件(hibernate.cfg.xml),指定数据库连接信息和实体类映射。接着,通过SessionFactory创建...

    hibernate-3.2 jar包

    `lib`目录下则包含了与Hibernate 3.2协同工作的其他第三方库,这些库文件是Hibernate正常工作所必需的,例如: 1. `cglib-nodep.jar`: CGLIB是一个代码生成库,用于为Java类创建子类,主要用于Hibernate的动态代理...

    hibernate-distribution

    标题"hibernate-distribution"指的是Hibernate的一个发行版,这通常意味着它是一个包含了所有必要的文件和库,供用户在他们的开发环境中使用Hibernate的集合。描述中的"hibernate-distribution-3.3.2.GA-dist"进一步...

    hibernate-reference-3.1.1.pdf

    首先,文档通过“第一个Hibernate应用”这一章节,让读者了解如何创建一个持久化类,定义映射文件,并配置Hibernate。这部分内容涵盖了从构建项目环境(如使用Ant进行构建),到启动和使用助手类进行对象加载与存储...

    hibernate-3.6.5.Final-dist.zip

    深入了解Hibernate的缓存机制、懒加载、级联操作、集合映射、多态映射、自定义类型以及实体生命周期管理等特性,能帮助开发者更好地利用Hibernate优化数据访问效率,避免常见的性能陷阱。 ### 总结 `hibernate-...

    hibernate-3.2 源码

    3. 集合映射:一对多、多对多关系的映射,如Set、List、Map等集合类型的处理。 4. 异步查询:通过Hibernate的FutureResult和Query.listAsync()实现异步数据检索。 5. 动态模型:无需预先定义实体类,可以动态构建...

    hibernate最新版jar包(全)

    标题"hibernate最新版jar包(全)"表明这是一个包含Hibernate最新版本所有必需的JAR文件的集合。Hibernate是一个流行的Java持久化框架,它简化了数据库与Java对象之间的交互,使得开发者能更方便地进行数据库操作。 ...

    hibernate-3.2.6

    9. **集合映射**:包括List、Set、Map等多种Java集合类型与数据库表的关联映射,支持一对一、一对多、多对一和多对多关系。 10. **事件监听器**:Hibernate 3.2.6允许开发者注册监听器,对对象的生命周期事件(如...

    Beginning-Hibernate-2nd-Edition.pdf

    6. **集合映射改进**:对于集合类型的映射,Hibernate 3.5 提供了更多的灵活性,包括对有序集合的支持等。 #### 五、书籍主要内容 《Beginning Hibernate 第二版》的主要内容涵盖了以下几个方面: 1. **Hibernate...

    hibernate-distribution-3.3.2.GA.rar

    1. 第二级缓存:可以提高数据访问速度,将经常访问的对象或集合存储在内存中,避免频繁的数据库访问。 2. 查询优化:避免N+1查询问题,合理使用JOIN和子查询,优化HQL语句。 3. 异步操作:通过Future和Thread Pool来...

    hibernate-distribution-3.3.2.GA

    - 高级映射:支持复杂对象模型,包括一对一、一对多、多对一、多对多等各种关联映射,以及集合、数组、自定义类型等复杂数据类型映射。 3. 安装与配置 - 下载:可以从Hibernate官方网站或者通过给定的压缩包...

    hibernate-3.2.6-src_a.rar

    8. **类型系统与值类型**:Hibernate的`Type`接口定义了各种值类型的映射,包括基本类型、数组、集合等,深入理解这些类型对于优化数据存储和查询至关重要。 9. **反射与代理机制**:Hibernate利用Java反射API动态...

    hibernate-4.2.3-doc

    1. 集合映射:处理一对多、多对一、多对多关系,如 Set、List、Map 的映射。 2. 继承映射:支持单表、表-per-hierarchy、表-per-subclass 等继承策略。 3. 联接查询和子查询:优化查询性能,避免 N+1 问题。 4. 延迟...

    hibernate-3.2.1-all-bin.zip

    12. **集合映射**:支持一对一、一对多、多对一、多对多等各种关系的映射,使复杂的数据结构得以简化。 13. **增强的性能**:优化了查询性能,例如,通过使用HQL和Criteria API避免了不必要的SQL构造,减少了数据库...

    hibernate-release-4.3.4.Final

    2. 集合映射:允许对象集合与数据库表的列进行映射。 3. 延迟加载(Lazy Loading):只有在真正需要时才加载关联的对象,提高性能。 4. 异步查询和批处理:优化大数据量操作的性能。 总结,Hibernate 4.3.4.Final...

    hibernate-3.6.8的jar包

    这里的“hibernate-3.6.8的jar包”指的是Hibernate 3.6.8版本的所有必需JAR文件集合,对于基于Eclipse的SSH(Struts、Spring、Hibernate)项目开发至关重要。 SSH(Struts、Spring、Hibernate)是一个流行的Java ...

    hibernate-lib

    6. **关联映射**:Hibernate允许对象之间的复杂关联,如一对一、一对多、多对一和多对多,使得数据模型的构建更加灵活。 在【hibernate-lib】压缩包中,可能包含的文件有: - Hibernate核心库(hibernate-core.jar...

    hibernate-distribution-3.6.7.Final-dist.zip

    Hibernate支持第二级缓存和查询缓存,可以显著提高性能。例如,使用Ehcache作为缓存提供者,通过配置文件启用缓存服务。 六、事务管理 Hibernate支持JTA(Java Transaction API)和JDBC事务管理。开发者可以通过...

Global site tag (gtag.js) - Google Analytics