`
wjt276
  • 浏览: 650520 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

008多对一 关联映射 --- many-to-one(一)

阅读更多

008关联映射:

Ø         多对一 --- many-to-one

Ø         一对多 --- one-to-many

Ø         一对一 --- one-to-one

Ø         多对多 --- many-to-many

008多对一 关联映射 --- many-to-one

场景:用户和组;从用户角度来,多个用户属于一个组(多对一 关联)

使用hibernate开发的思路:先建立对象模型(领域模型),把实体抽取出来。

目前两个实体:用户和组两个实体,多个用户属于一个组,那么一个用户都会对应于一个组,所以用户实体中应该有一个持有组的引用。

对象模型图:

 

 

关系模型:  


 

关联映射的本质:

 将关联关系映射到数据库,所谓的关联关系是对象模型在内存中一个或多个引用。

User实体类:

public class User {

    private int id;

    private String name;

    private Group group;

 

    public Group getGroup() {

        return group;

    }

public void setGroup(Group group) {

        this.group = group;

    }

    public int getId() {

        return id;

    }

    public void setId(int id) {

        this.id = id;

    }

    public String getName() {

        return name;

    }

    public void setName(String name) {

        this.name = name;

    }

}

Group实体类:

public class Group {

    private int id;

    private String name;

    public int getId() {

        return id;

    }

    public void setId(int id) {

        this.id = id;

    }

    public String getName() {

        return name;

    }

    public void setName(String name) {

        this.name = name;

    }

}

实体类建立完后,开始创建映射文件,先建立简单的映射文件:

Group实体类的映射文件:

<hibernate-mapping>

    <class name="com.wjt276.hibernate.Group" table="t_group">

        <id name="id" column="id">

            <generator class="native"/>

        </id>

        <property name="name"/>

    </class>

</hibernate-mapping>

User实体类的映射文件:

<hibernate-mapping>

    <class name="com.wjt276.hibernate.User" table="t_user">

        <id name="id" column="id">

            <generator class="native"/>

        </id>

        <property name="name"/>

        <!--<many-to-one> 关联映射 多对一的关系

            name:是维护的属性(User.group),这样表示在多的一端表里加入一个字段名称为group,

            groupSQL中的关键字重复,所以需要重新命名字段(column="groupid").

        这样这个字段(groupid)会作为外键参照数据库中group(t_group也叫一的一端),也就是就在多的一

            端加入一个外键指向一的一端。

         -->

        <many-to-one name="group" column="groupid"/>

    </class>

</hibernate-mapping>

<many-to-one>标签

例如:<many-to-one name="group" column="groupid"/>

<many-to-one> 关联映射 多对一的关系

name:是维护的属性(User.group),这样表示在多的一端表里加入一个字段名称为group,groupSQL中的关键字重复,所以需要重新命名字段(column="groupid").这样这个字段(groupid)会作为外键参照数据库中group(t_group也叫一的一端),也就是就在多的一端加入一个外键指向一的一端。

 

         这样导出至数据库会生成下列语句:

alter table t_user drop foreign key FKCB63CCB695B3B5AC

drop table if exists t_group

drop table if exists t_user

create table t_group (id integer not null auto_increment, name varchar(255), primary key (id))

create table t_user (id integer not null auto_increment, name varchar(255), groupid integer, primary key (id))

alter table t_user add index FKCB63CCB695B3B5AC (groupid), add constraint FKCB63CCB695B3B5AC foreign key (groupid) references t_group (id)

  • 大小: 3.2 KB
  • 大小: 3.7 KB
分享到:
评论

相关推荐

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

    一、一对一(one-to-one)与一对多(one-to-many)关系 1. 一对一关系: 在现实世界中,如一个人只有一个身份证,这就是典型的"一对一"关系。在Hibernate中,可以通过@OneToOne注解实现。这种关系通常需要使用外键...

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

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

    NHibernate One-to-Many一对多映射-xxlinux_com

    在数据库世界中,一对多(One-to-Many)关系是一种常见的关联类型,其中一个表(父表)可以与多个其他表(子表)相关联。在NHibernate中,配置这种映射关系对于理解和使用ORM至关重要。 一对多关系意味着一个实体...

    Many-to-one关联映射

    关联映射的本质: 将关联关系映射到数据库,所谓的...&lt;many-to-one&gt;会在多的一端加入一个外键,指向一的一端,这个外键是由&lt;many-to-one&gt; 中的column属性定义的,如果忽略了这个属性那么默认的外键与实体的属性一致

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

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

    Spring+Hibernate一对多关联映射---部门与员工表的级联添加

    本教程将深入探讨Spring和Hibernate结合使用时的一对多关联映射,特别是部门与员工表的级联添加。 在数据库设计中,一对多关联是一个常见的关系类型,例如一个部门可以有多名员工,但每个员工只能属于一个部门。在...

    hibernate 关联映射(一) many to one

    在数据库中,这通常表现为一对多(One-to-Many)的关系,但在对象模型中,由于我们是从一个对象的角度出发,所以称为Many-to-One。 在Hibernate中实现Many-to-One关联,我们需要在实体类中定义对应的属性,并通过...

    hibernate的关联映射

    关联映射主要包括四种类型:一对一(One-to-One)、一对多(One-to-Many)、多对一(Many-to-One)和多对多(Many-to-Many)。下面我们将逐一探讨这些关联映射的配置方法。 1. **一对一关联映射** - **主键关联**...

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

    ### Hibernate Many-to-One (多对一) 及 Cascade (级联) #### 一、Many-to-One(多对一) 在数据库设计中,实体之间的关系主要包括一对一、一对多、多对多等几种类型。而在ORM(对象关系映射)框架Hibernate中,...

    MyBatis的一对一关联映射

    在实际的项目开发中,数据库中的表与表之间经常存在各种关联关系,比如一对一(One-to-One)、一对多(One-to-Many)和多对多(Many-to-Many)关系。本篇文章将重点讲解如何在 MyBatis 中实现一对一的关联映射。 一...

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

    在Hibernate框架中,双向一对多关联映射是常见的对象关系映射(ORM)方式,用于在Java对象模型中表示数据库中的两个实体之间的多对一关系。在这个场景中,"一"端通常指的是一个实体可以拥有多个另一个实体的实例,而...

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

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

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

    #### 一、多对一关联(Many-to-One) 在本章中,我们将探讨如何在 Hibernate 中处理多对一关联。这种关联类型非常常见,在许多应用中都会遇到。例如,在一个在线书店应用中,每本书都与一个出版商关联,而一个出版...

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

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

    MyBatis关联映射代码

    "关联映射"是MyBatis中的一个重要概念,用于处理数据库中表之间的关联关系,比如一对一、一对多、多对一和多对多的关系。下面将详细介绍MyBatis的关联映射以及如何在代码中实现。 关联映射是MyBatis通过XML配置文件...

    Hibernate 的关联映射

    "Hibernate的关联映射"是Hibernate中的核心概念之一,用于模拟数据库中的关系,包括一对一(One-to-One)、一对多(One-to-Many)、多对一(Many-to-One)和多对多(Many-to-Many)四种关系。现在,让我们详细探讨...

    Hibernate-one-to-many

    本文将深入探讨Hibernate中一对多(One-to-Many)关系的处理方式,特别是通过外键映射和inverse属性的应用场景。 #### 一对多关系概念 一对多关系在数据库设计中非常常见,它指的是一个实体可以与多个其他实体关联...

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

    对于`Department`,映射文件中会有一个`&lt;class&gt;`标签,其中包含`&lt;set&gt;`标签来定义员工集合,并且使用`&lt;many-to-many&gt;`或`&lt;one-to-many&gt;`标签来映射与`Employee`的关系。对于`Employee`,我们使用`&lt;class&gt;`标签,并在...

    hibernate一对多关联映射(双向关联)

    在Java的持久化框架Hibernate中,一对多关联映射是一种常见的关系映射方式,它用于表示一个实体(如用户)可以拥有多个子实体(如订单)的情况。在本篇文章中,我们将深入探讨如何实现双向关联的一对多映射,以及在...

Global site tag (gtag.js) - Google Analytics