`
younglibin
  • 浏览: 1211061 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

hibernate映射文件many-to-many元素属性

阅读更多

N-----N

column(可选): 这个元素的外键关键字段名
 
 formula (可选): 用于计算元素外键值的SQL公式.
 
 class (必需): 关联类的名称
 
 outer-join (可选 - 默认为auto): 在Hibernate系统参数中hibernate.use_outer_join被打开的情况下,该参数用来允许使用outer join来载入此集合的数据。
 
 为此关联打开外连接抓取或者后续select抓取。这是特殊情况;对于一个实体及其指向其他实体的多对多关联进全预先抓取(使用一条单独的SELECT),你不仅需要对集合自身打开join,也需要对<many-to-many>这个内嵌元素打开此属性。
 
 对外键字段允许DDL生成的时候生成一个惟一约束。这使关联变成了一个高效的一对多关联。(此句存疑:原文为This makes the association multiplicity effectively one to many.)
 
 not-found (可选 - 默认为 exception): 指明引用的外键中缺少某些行该如何处理: ignore 会把缺失的行作为一个空引用处理。
 
 entity-name (可选): 被关联的类的实体名,作为class的替代。
 
 property-ref: (可选) 被关联到此外键(foreign key)的类中的对应属性的名字。若未指定,使用被关联类的主键。

 

 

单向N——N关联:

N——N关联必须使用连接表,N——N关联与有表连接的1——N关联非常相似,只要去掉many-to-many 元素的unique=“true”属性即可;

 

eg:

<!-- 映射集合属性,集合元素是其他持久化实体
   指定连接表的表名-->

  <set name="addresses" table="person_address">
   <!-- 指定连接表中参照本表记录的外键列名 -->
   <key column="person_id" />
    <!-- 使用many-to-many来映射1-N关联,
    增加unique="true" -->

   <many-to-many class="Address"/>
  </set>

 

双向N——N关联:

 

双向N——N关联需要两端都使用Set集合属性,两端都增加对集合属性的访问,双向N——N关联没有太多选择只能使用连接表建立两个实体之间的关联关系;

Preson.java

//N-N关联关系,使用Set来保存关联实体
 private Set<Address> addresses
  = new HashSet<Address>();

Address.java:

 //N-N关联关系,使用Set来保存关联实体
 private Set<Person> persons
  = new HashSet<Person>();

 

Preson.hbm.xml:
<!-- 映射集合属性,集合元素是其他持久化实体
   没有指定cascade属性 -->

  <set name="addresses" inverse="true"
   table="person_address">
   <!-- 指定关联的外键列 -->
   <key column="person_id"/>
   <!-- 用以映射关联类属性 -->
   <many-to-many class="Address"
    column="address_id"/>

  </set>

Address.hbm.xml:

<!-- 映射集合属性,集合元素是其他持久化实体
   没有指定cascade属性 -->

  <set name="persons" table="person_address">
   <!-- 指定关联的外键列 -->
   <key column="address_id"/>
   <!-- 用以映射关联类属性 -->
   <many-to-many class="Person"
    column="person_id"/>

  </set>

 

双向N——N关联的两边都需要指定连接表的表名,外键列的列名:

两个set元素table必须指定,并且必须相同,

set元素的两个字元素:key和many-to-many都必须指定column属性,key和many-to-many分别制定本持久化类,关联类在连接表中的外键列名,因此两边的key与many-to-many的column属性交叉相同,

分享到:
评论

相关推荐

    hibernate many-to-many级联保存,级联更新,级联删除

    在这些映射文件中,使用`&lt;many-to-many&gt;`标签来定义关系。例如: ```xml &lt;!-- Student.hbm.xml --&gt; &lt;many-to-many class="Course" column="course_id" foreign-key="fk_student_course"/&gt; &lt;!-- Course.hbm.xml --&gt;...

    (4)Hibernate中的many-to-one和one-to-many关系

    本话题主要探讨两种基本的关系映射类型:many-to-one(多对一)和one-to-many(一对多)。这两种关系映射是数据库中常见的关联类型,理解和掌握它们对于开发高质量的Java应用至关重要。 1. many-to-one关系 many-to...

    Hibernate one-to-many / many-to-one关系映射

    "Hibernate one-to-many / many-to-one关系映射"是两个基本的关系类型,用于表示实体间的关联。在这个主题中,我们将深入探讨这两种关系映射的原理、配置和实际应用。 一、一对一(one-to-one)与一对多(one-to-...

    hibernate many-to-one(多对一)及 cascade(级联).doc

    在Hibernate中,可以通过 `&lt;many-to-one&gt;` 或者 `&lt;one-to-many&gt;` 标签中的 `cascade` 属性来指定这种行为。 #### 代码示例解析 在提供的代码示例中,`&lt;many-to-one&gt;` 标签中包含了 `cascade` 属性的注释示例,但是...

    Hibernate应用例子many-to-many

    本示例将详细讲解如何在Hibernate中实现多对多(many-to-many)的关系映射。 在数据库设计中,多对多关系是指两个实体之间存在多个关联,比如学生和课程的关系,一个学生可以选修多门课程,一门课程也可以被多个...

    Hibernate Many-To-Many Mapping Annotations

    在Java的持久化框架Hibernate中,Many-to-Many映射是一种常见的关系模型,它用于表示两个实体类之间多对多的关系。在这个主题中,我们将深入探讨如何使用注解来实现这种映射,以及其背后的数据库原理和实际应用。 ...

    Hibernate Mapping Many-to-One 实例 内附源代码及附件下载

    本实例将详细讲解如何在Hibernate中实现Many-to-One关系映射,这是一种常见的数据库关联,表示一个实体可以与多个其他实体相关联。 在Many-to-One关系中,通常一个实体(如部门)可以有多个相关实体(如员工),而...

    Hibernate many-to-many

    "Hibernate many-to-many"指的是Hibernate中处理多对多关联关系的一种方式。多对多关系是两个实体类之间存在的一种复杂关联,比如学生和课程之间的关系,一个学生可以选修多门课程,一门课程也可以被多个学生选修。 ...

    hibernate one-to-one 一对一唯一外键关联映射_单向 and 双向

    在Hibernate中,一对一唯一外键关联映射可以通过 `&lt;many-to-one&gt;` 标签来配置。例如,以下是Person实体与IdCard实体的一对一唯一外键关联映射配置: ```xml &lt;many-to-one name="idCard" column="card_id...

    Hibernate one-to-many-annotation

    在Hibernate中,`one-to-many`关系是常见的实体间关系之一,表示一个实体可以与多个其他实体相关联。本文将深入探讨`Hibernate one-to-many`注解的使用和实现细节。 ### 一、`@OneToMany`注解概述 `@OneToMany`...

    Hibernate实现many-to-many的映射关系

    3. 在对应的映射文件中,使用`&lt;set&gt;`和`&lt;one-to-many&gt;`或`&lt;many-to-one&gt;`元素配置映射关系。 4. 如有必要,可以考虑将多对多关系转换为一对多,以优化性能和操作性。 理解并熟练掌握这些概念和实践,将有助于在使用...

    hibernate学习5之one-to-many双向关联.docx

    在XML映射文件中,`Student.hbm.xml`包含了`&lt;many-to-one&gt;`元素,表示学生对象引用了一个班级对象,通过`classesid`列连接。而`Classes.hbm.xml`则使用了`&lt;set&gt;`和`&lt;one-to-many&gt;`元素,表示班级对象包含一个学生...

    生成hibernate映射文件工具

    5. `&lt;many-to-one&gt;` 和 `&lt;one-to-many&gt;`:定义一对一和一对多的关联关系。 6. `&lt;join&gt;`:用于处理复合主键或者跨表的复杂映射。 生成工具的工作原理大致如下: 1. 连接数据库:工具会首先连接到指定的数据库,获取...

    Hibernate Tutorial 04 (Many-to-one and One-to-one Association

    为了使用 `publisher` 属性,我们需要在 `Book` 类的 Hibernate 映射文件中添加 `&lt;many-to-one&gt;` 映射。这将在 `BOOK` 表中添加一个名为 `PUBLISHER_ID` 的列,并存储关联出版商的 ID。 ```xml &lt;!-- 其他属性的...

    hibernate one-to-many 单/双向关联映射配置心得

    本文主要关注Hibernate中的一个核心概念——一对一(One-to-One)、一对多(One-to-Many)和多对一(Many-to-One)关联映射,特别是关于“一到多”单向和双向关联映射的配置心得。 首先,让我们了解“一到多”关联...

    Hibernate-one-to-many

    同时,`Account.hbm.xml`中的`many-to-one`元素将`column`属性设置为`FID`,表示通过`FID`字段关联到`User`实体。 #### 测试场景解释 在测试场景中,我们创建了一个`User`对象和一个`Account`对象,并在`User`对象...

    Hibernate映射解析 七种映射关系 后端 - Java.zip

    3. **多对一(Many-to-One)**:与一对一相反,多个实体可以关联到一个实体,例如,每个订单都属于一个用户。`@ManyToOne`注解用于定义这种关系,可以设置`fetch`属性来控制加载策略。 4. **多对多(Many-to-Many)...

    Hibernate集合关系映射及one-one,one-many,many-many示例(带注释)

    本程序包含: hibenate 上传图片,二进制数据,大文本,集合映射的多种关系,onetoone,ontomany,manytomany等关系详细代码示例以及注释,全部由本人测试通过,对理解hibernate配置有极大帮助。

    hibernate 全面学习->hibernate 关联映射学习

    本篇文章将全面探讨Hibernate的关联映射学习,包括一对一(One-to-One)、一对多(One-to-Many)、多对一(Many-to-One)以及多对多(Many-to-Many)四种关系映射。 首先,一对一关联映射(One-to-One)是两个实体...

Global site tag (gtag.js) - Google Analytics