`
as619864232
  • 浏览: 326319 次
社区版块
存档分类
最新评论

Hibernate 映射实体类中的3种集合类型

阅读更多

一、Map:一组键值对应的无序,唯一的数据。

二、Set:一组无序,唯一的数据    该集合是用的最多的。

三、List:一组有序、不唯一的数据。

 

 

<!-- List 集合的节点 -->
<bag name="emps">
	<key column="deptno"/>
	<one-to-many class="org.entity.Emp"/>
</bag>

<!-- 还是 List 集合的节点,但该 List 的 key 从 base 或者0开始直到该集合的 list-index 的列最大值-->
<list name="emps">
	<key column="deptno" />
	<list-index column="empno" />
	<one-to-many class="org.entity.Emp"/>
</list>

<!-- Map 集合的节点 -->
<map name="emps" inverse="true" cascade="all">
	<key column="deptno" />
	<map-key type="java.lang.Integer" column="empno"></map-key>
    <one-to-many class="org.entity.Emp" />
</map>

<!-- Set 集合的节点 -->
<set name="emps" inverse="true" cascade="all">
    <key>
        <column name="DEPTNO" precision="2" scale="0" />
    </key>
    <one-to-many class="org.entity.Emp" />
</set>

 

所有的有序集合类(maps,lists,arrays)都拥有一个由 <key> 和 <index> 组成的主键。这种情况下集合类的更新是非常高效的 — 主键已经被有效的索引,因此当 Hibernate 试图更新或删除一行时,可以迅速找到该行数据。

 

集合(sets)的主键由 <key> 和其他元素字段构成。对于有些元素类型来说,这很低效,特别是组合元素或者大文本、大二进制字段;数据库可能无法有效的对复杂的主键进行索引。另一方面,对于一对多、多对多关联,特别是合成的标识符来说,集合也可以达到同样的高效性能。( 附注:如果你希望 SchemaExport 为你的 <set> 创建主键,你必须把所有的字段都声明为 not-null="true"。)

 

<idbag> 映射定义了代理键,因此它总是可以很高效的被更新。事实上,<idbag> 拥有着最好的性能表现。

 

Bag 是最差的。因为 bag 允许重复的元素值,也没有索引字段,因此不可能定义主键。 Hibernate 无法判断出重复的行。当这种集合被更改时,Hibernate 将会先完整地移除 (通过一个(in a single DELETE))整个集合,然后再重新创建整个集合。因此 Bag 是非常低效的。

 

请注意:对于一对多关联来说,“主键”很可能并不是数据库表的物理主键。但就算在此情况下,上面的分类仍然是有用的。(它仍然反映了 Hibernate 在集合的各数据行中是如何进行“定位”的。)

分享到:
评论

相关推荐

    Hibernate映射集合属性List

    这里的"List"是Java集合框架中的一个接口,用于存储一组有序的元素,而在Hibernate中,它常用来映射数据库中的数组、列表或集合类型的数据。本文将详细探讨如何使用Hibernate映射集合属性List,以及如何让Hibernate...

    JAVA数据类型与Hibernate的类型映射

    此外,自定义对象的映射是Hibernate映射中的一个重要部分。通过在实体类上使用@Entity注解,并使用@Id注解指定主键字段,可以将一个Java类映射到数据库的一张表。字段则通过@Column注解来指定列名和属性,如长度、...

    hibernate集合的映射

    本文将深入探讨Hibernate中的四种主要集合映射类型:Set、List、Array和Map,以及它们在实际开发中的应用场景和配置。 一、Set集合映射 Set集合映射是最常见的映射类型,它不允许重复元素。在Hibernate中,Set通常...

    hibernate set 集合映射

    1. **集合类型**:Hibernate支持多种集合类型映射,如Set、List、ArrayList、LinkedList、Map等。Set是最常见的集合映射类型,它不允许重复元素,与数据库中的唯一约束相对应。 2. **元素类型**:集合中的每个元素...

    数据库表映射成实体类

    "数据库表映射成实体类"是一种常见的做法,它允许我们通过对象-关系映射(ORM)技术将数据库中的表格结构转化为Java类,这些类通常被称为JavaBean。这种映射过程大大简化了数据操作,使得开发人员可以使用面向对象的...

    [原]Hibernate集合映射

    总之,Hibernate集合映射是对象关系映射的重要组成部分,理解并熟练掌握各种映射类型、级联操作、缓存策略等,将有助于我们在实际开发中更高效、更灵活地处理数据库与Java对象之间的关系。在实践中,不断调整和优化...

    Hibernate集合映射与关联关系

    在Hibernate中,我们可以使用集合类(如List、Set、Map等)来映射这些关系。例如,一个学生可以有多次成绩记录,这就构成了一个学生到成绩的映射关系,通常我们使用Map来表示这种关系,因为Map能确保每个学生都有...

    hibernate bag 集合映射

    "bag"是Hibernate中的一种集合类型,表示无序的、可重复的对象集合。在数据库层面,这通常对应于一个无特定排序且可能包含重复值的表。在Java代码中,你可以将bag映射为ArrayList或者LinkedList,尽管它们在内存中的...

    Hibernate映射配置实例大全(详细总结)

    综上所述,"Hibernate映射配置实例大全"涵盖的内容广泛,包括基本的配置文件设置、实体类的XML和注解映射、集合映射、加载策略、事务管理和缓存配置等。通过深入学习和实践这些实例,开发者可以熟练地运用Hibernate...

    常用 Hibernate 映射配置说明.doc

    `class`节点是映射文件中定义具体实体类的地方,它将Java类与数据库表关联起来。 - **name**: 映射的Java类的全限定名。 - **table**: 数据库中的对应表名。 - **discriminator-value**: 用于单表继承模式下的...

    hibernate学习入门一对多实体映射源码

    在数据库设计中,一对多关系是一种常见的关联类型,意味着一个父实体可以有多个子实体,而每个子实体只能属于一个父实体。例如,一个学生可以对应多门课程,而一门课程只能被一个学生选修。 三、配置一对多映射 在...

    Hibernate常见集合映射(Set,List_Array,Map,Bag)

    在 Hibernate 中,集合映射是指将 Java 集合类型与数据库表之间的映射关系。常见的集合映射类型有 Set、List、Array、Map 和 Bag 等,每种类型都有其特点和应用场景。 Set 集合映射 Set 集合是 Hibernate 中基础的...

    hibernate映射篇

    在Hibernate中,我们使用`&lt;set&gt;`标签来表示集合类型的关联,通过`&lt;key&gt;`标签指定外键列(如`&lt;key column="classesid" /&gt;`),并使用`&lt;one-to-many&gt;`标签指定关联的实体类(如`&lt;one-to-many class="com.bdqn....

    hibernate关联映射实例

    这种映射可以通过集合类型如List、Set等来表示子项的集合。 2. **多对多关联映射**: 多对多关联是两个实体之间都可以有多个匹配项的情况,比如学生和课程的关系。在Hibernate中,我们可以使用`@ManyToMany`注解来...

    hibernate中容器映射技术

    在Java持久化框架Hibernate中,容器映射技术是将Java集合类(如Set、Map、List等)与数据库中的关联关系进行映射的一种方法。这种技术使得对象之间的复杂关系能够被有效地存储和检索,增强了数据操作的灵活性。下面...

    Hibernate3.x关联映射示例

    本示例将深入探讨 Hibernate 3.x 中的关联映射,以帮助开发者更好地理解和应用这一关键技术。 关联映射是Hibernate中的核心概念之一,它允许我们将数据库中的表关系映射到对象之间的关系。主要的关联类型有以下几种...

    Hibernate教程20_关系映射案例三

    3. **实体类和注解**:在Java类上使用Hibernate的注解,如`@Entity`表示这是一个数据库中的表,`@Table`定义表名,`@Id`标识主键,`@GeneratedValue`处理主键生成策略,`@ManyToOne`, `@OneToOne`, `@OneToMany` 和 ...

    hibernate中的集合映射范例程序

    在“CollectionMapping”这个示例程序中,你将看到如何在Hibernate配置文件中定义这些集合映射,以及如何在实体类中声明和使用它们。通过实践这些范例,你将更深入地了解Hibernate的集合映射机制,并能熟练地应用于...

    hibernate list集合映射

    List集合映射是其中常见的一种方式,它允许我们将数据库中的一组相关记录映射到Java对象的List列表中。这种映射机制使得在操作数据时更加灵活方便,能够实现对象关系映射(ORM)的优势。 **一、List集合映射的基础...

    Hibernate 映射文件 结构

    11. ****、****、****、****:集合类型的映射,对应Java中的List、Set和Map,用于处理一对多关系。 12. ****:缓存配置,可以设置二级缓存,提高数据读取效率。 13. ****:乐观锁,用于版本控制,防止并发更新时的...

Global site tag (gtag.js) - Google Analytics