`
什么世道
  • 浏览: 222450 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

Hibernate 关系映射之多对一,一对多关联

阅读更多

Hibernate 关系映射之多对一,一对多关联

一、多对一单向

使用场景:以用户(user)和组(group)关系为例 。

    一个组有多个用户;每一个用户对应一个特定的组。

 

  • 对象模型


 

实体类 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(Stringname) {  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(Stringname) {this.name = name;}
}

 

 

  • 关系模型  


 

  • 实体映射关联

1.xml方式

<many-to-one>标签设定关联,在多的一方设置对应的外键

 

 

<!--Group.hbm.xml-->
<hibernate-mapping>
  <class name="com.yk.hibernate.Group" table="group">
      <id name="id" column="id">
          <generator class="native"/>
      </id>
      <property name="name"/>
  </class>
</hibernate-mapping>
<!--User.hbm.xml-->
<hibernate-mapping>
  <class name="com.yk.hibernate.User" table="user">
      <id name="id" column="id">
          <generator class="native"/>
      </id>
      <property name="name"/>  
      <many-to-one name="group" column="gid"/>
  </class>
</hibernate-mapping>

 

 

 annotation方式

在“多”的类中的“一”对象getter方法上添加注解@ManyToOne注解,并用@JoinColumn设定外键名,如下

 

 

@ManyToOne
@JoinColumn(name="gid")
  public Group getGroup() {
      return group;
 }

 

 

二、一对多单向

使用场景:以Class(班级)和Student(学生)的关系为例。

每一个学生属于一个班,每一个班有多个学生。

 

  • 对象模型 

 

实体类Class:

 

public class Class{
  private int id;
  private String name; 
  private Set<Student>students = new HashSet<Student>();
  public int getId() {return id;  }
  public void setId(int id) {this.id = id;}
  public String getName() {return name;}
  public void setName(Stringname) {this.name = name;}
}

  实体类Student:

 

 

public class Student {
  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(Stringname) {  this.name = name;}
}

 

 

 

  • 关系模型

 

  •  多对一、一对多的区别:

多对一关联映射:在多的一端加入一个外键指向一的一端,它维护的关系是多指向一的。

一对多关联映射:在多的一端加入一个外键指向一的一端,它维护的关系是一指向多的。

 

两者使用的策略是一样的,只是各自所站的角度不同。

 

  • 实体映射关联

1.xml方式

在“一”的一方添加<set>标签 映射一对多(映射set集合),name=集合对象,然后在用<key>标签定义外键。<one-to-many>标签设置映射的类实体

 

<!--Student.hbm.xml-->
<hibernate-mapping>
    <class name="com.yk.hibernate.Student" table="student">
        <id name="id" column="id">
            <generator class="native"/>
        </id>
        <property name="name" column="name"/>
    </class>
</hibernate-mapping> 
<!--Class.hbm.xml-->
<hibernate-mapping>
    <class name="com.yk.hibernate.Classes" table="class">
        <id name="id" column="id">
            <generator class="native"/>
        </id>
        <property name="name" column="name"/>       
        <set name="students">
            <key column="cid"/>
            <one-to-many class="com.yk.hibernate.Student"/>
        </set>
    </class>
</hibernate-mapping>

 

2.annotation方式 

在“一”的类中的“多”对象getter方法上添加注解@OneToMany 注解,并用@JoinColumn设定外键名,如下

 @OneToMany 
 @JoinColumn(name="cid") 
   public Set<Student>getStudents() {
     return students;
 }

 

三、多对一双向(一对多双向)

在此不再累赘了,"一"和"多"关系可以双向维持,使用不是很多。关联设定的方法是上面两者的综合。

 

 

  • 大小: 8.3 KB
  • 大小: 10.1 KB
  • 大小: 10.4 KB
  • 大小: 10.3 KB
1
0
分享到:
评论

相关推荐

    hibernate关联映射详解

    包含《多对多双向关联映射》《多对一单向关联映射》《多对一双向关联映射》《一对多单向关联映射》等文档,并有图解及例子,非常适合新手学习,尤其是刚刚接触hibernate,对映射关系不清楚的。。。。

    hibernate多对多关联映射

    总之,Hibernate的多对多关联映射是解决复杂关系数据库设计的关键技术之一。通过合理的配置和使用,开发者可以轻松管理实体之间的多对多关系,提高开发效率。理解并熟练掌握这部分知识对于提升Java企业级应用开发...

    Hibernate映射一对多关联关系

    ### Hibernate映射一对多关联关系 #### 知识点概览 - **概念解析**:一对多(One-to-Many)关联关系的概念及其在Hibernate中的实现方式。 - **域模型设计**:创建具有一个实体与多个实体关联的域模型。 - **关系...

    hibernate关联映射详解SSH 多对多,一对多关系对象映射

    首先,让我们理解一对多关联映射。在数据库中,一对多关系意味着一个表中的记录可以与另一个表中的多个记录相关联。在Hibernate中,这可以通过在实体类中使用`@OneToMany`注解来实现。该注解定义了一个实体可以拥有...

    hibernate关联映射实例

    1. **一对多关联映射**: 在现实世界中,一个实体可能会与多个其他实体相关联,比如一个用户可以有多个订单。在Hibernate中,我们通过`@OneToMany`注解来实现这种关系。这个注解通常放在拥有众多子项的一方,配置`...

    Hibernate 关联关系映射分类

    一对多关联表示一个实体可以与多个其他实体相关联,但在这些多个实体中,每个实体只能与一个实体关联。一对多关联同样可以分为单向关联和双向关联。 #### 单向关联 - **多对一单向关联**:在这种关联中,多个实体...

    Hibernate集合映射与关联关系

    本主题将深入探讨Hibernate集合映射与关联关系,包括"student与Score的Map集合关系"、"student与class的多对一"以及"一对多映射"的概念。 首先,让我们理解一下Hibernate中的集合映射。在关系型数据库中,一个实体...

    Hibernate一对一主键关联映射(双向关联)

    在Java的持久化框架Hibernate中,一对一(One-to-One)关联映射是一种常见的关系数据库模型映射方式。这种关联通常发生在两个实体之间,且每个实体都只有一个对应的实例。本篇文章将详细探讨双向一对一主键关联映射...

    Hibernate关联映射

    9. Hibernate 一对一外键双向关联、主键双向关联、连接表双向关联、一对多外键双向关联、一对多连接表双向关联、多对多双向关联: 这些关联方式与单向关联类似,区别在于两个实体类都知道彼此的关联。在双向关联中...

    hibernate的关联关系映射

    此外,多对一关联实际上与一对多关联非常类似,唯一的区别在于外键的方向。在实际应用中,这种关联经常用于表示一个教师有多门课程,但每门课程只有一个任教教师。 总结来说,Hibernate的关联关系映射允许开发者...

    hibernate关联映射的作用和常用属性解释

    其中,“关联映射”是Hibernate中的一个重要概念,用于处理实体之间的关联关系,例如一对一、一对多、多对一以及多对多等。 #### 常用属性解析 为了更好地理解和运用Hibernate中的关联映射机制,我们需要深入了解...

    Hibernate双向一对一关联映射(注解版)

    本主题聚焦于“Hibernate双向一对一关联映射”的注解实现,这是一种高级的数据库设计模式,用于处理两个实体之间一对一的关系。 在Hibernate中,一对一关联映射分为单向和双向。单向一对一映射通常涉及一个实体持有...

    Hibernate之关联关系映射(一对多和多对一映射,多对多映射).docx

    本文将深入探讨Hibernate中的一对多、多对一以及多对多映射。 1. 一对多与多对一映射: 在现实世界中,许多关系表现为一对多或多对一的形式。例如,一个老师可以教授多个学生,而一个学生只能被一个老师教导;同样...

    hibernate实体关联关系映射

    一对多关联表示一个实体可以关联多个其他实体,如一个部门(Department)可以包含多个员工(Employee)。 ##### 1. 外键单向关联 在多的一方(Employee)中添加外键指向一的一方(Department),只在一的一方中定义...

    hibernate关联关系映射

    二、一对多关系映射(One-to-Many) 在一个实体中,如果一个实例可以对应多个其他实体的实例,这就是一对多关系。在Hibernate中,我们使用`@OneToMany`注解来表示。例如,一个部门可以有多个员工,Department类和...

    Hibernate关系映射

    "多对一"关系映射是Hibernate支持的四种基本关联类型之一,包括一对一、一对多、多对一和多对多。本篇将深入探讨“多对一”关系映射的概念、配置以及在实际web系统中的应用。 **一、“多对一”关系映射概念** 在...

    hibernate多对多关联映射(单项关联)

    在Java的持久化框架Hibernate中,多对多关联映射是一种常见的关系模型,它用于处理两个实体类之间存在多个对应关系的情况。这篇博客"hibernate多对多关联映射(单项关联)"深入探讨了如何在Hibernate中实现这种映射...

    hibernate关系映射多对多关系

    综上所述,这个压缩包提供了关于Hibernate关系映射的全面教程,包括多对多、一对一和一对多的关系配置,以及如何在Spring+Hibernate+Struts环境中应用这些关系。对于想要深入理解Hibernate并提升开发效率的Java...

Global site tag (gtag.js) - Google Analytics