`
yunhuisdu19811011
  • 浏览: 94693 次
  • 性别: Icon_minigender_2
  • 来自: 济南
社区版块
存档分类
最新评论
  • fightingIOW: 案例看了,能实现上传,但是不是异步的,怎么改成页面可以预览呢? ...
    swfUpload实例
  • kizz: 您好,实例我看了,确实不错。您有struts2版的吗?现在项目 ...
    swfUpload实例

Hibernate关系映射(N--N)多对多

    博客分类:
  • java
阅读更多

(1)N--N单向(多对多单向)  多对多的关系,一定要找个中间表进行管理

第一步:类 对象之间的关系映射

 

t_teacher(id,name,age)  --教师表

t_student(id,name,age)  --学生表

t_teacher_student(t_id,s_id)  --教师学时关系表

 

public class Teacher {
    private int id;
    private String name;
    private int age;
    private Set<Student> students;

}

 

public class Student {
    private int id;
    private String name;
    private int age;

}

 

第二步:xml的配置

    <class name="Teacher" table="t_teacher">
        <id name="id" column="id">
            <generator class="native"></generator>
        </id>
       
        <property name="name" unique="true" not-null="true" column="name" length="32"/>       
        <property name="age" column="age" length="32"/>
       
        <set name="students" table="t_teacher_student" cascade="save-update">
            <key column="t_id"></key>
            <many-to-many class="Student" column="s_id"></many-to-many>
        </set>    
  
    </class>

 

    <class name="Student" table="t_student">
        <id name="id" column="id">
            <generator class="native">               
            </generator>
        </id>
         <property name="name" unique="true" not-null="true" column="name" length="32"/>
         <property name="age" column="age" length="32"/>     
    </class>

 

 

(1)N--N双向(多对多双向)  多对多的关系,一定要找个中间表进行管理

第一步:类 对象之间的关系映射

t_teacher(id,name,age)  --教师表

t_student(id,name,age)  --学生表

t_teacher_student(t_id,s_id)  --教师学时关系表

 

 

public class Teacher {
    private int id;
    private String name;
    private int age;
    private Set<Student> students;

}

 

public class Student {
    private int id;
    private String name;
    private int age;

    private Set<Teacher> teachers; // 增加了Teacher的集合

}

 

第二步:xml的配置(多对多的双向,两边写法一样的)

    <class name="Student" table="t_student">
        <id name="id" column="id">
            <generator class="native">               
            </generator>
        </id>
        <property name="name" unique="true" not-null="true" column="name" length="32"/>
        <property name="age" column="age" length="32"/>


        -- 增加了set配置
        <set name="teachers" table="t_teacher_student" cascade="save-update">
            <key column="s_id"></key>
            <many-to-many class="Teacher" column="t_id"></many-to-many>
        </set>

    </class>

 

    <class name="Teacher" table="t_teacher">
        <id name="id" column="id">
            <generator class="native"></generator>
        </id>
        <property name="name" unique="true" not-null="true" column="name" length="32"/>
        <property name="age" column="age" length="32"/>
       
        <set name="students" table="t_teacher_student" cascade="save-update">
            <key column="t_id"></key>
            <many-to-many class="Student" column="s_id"></many-to-many>
        </set>
    </class>

分享到:
评论

相关推荐

    Hibernate的N对N的关系映射

    本文将详细介绍Hibernate中多对多关系的映射方法,包括单向和双向映射。 #### 二、多对多关系简介 多对多关系是指两个实体集合之间的元素可以相互关联,且每个集合中的元素都可以与其他集合中的多个元素关联。例如...

    hibernate的多种映射关系

    Hibernate 支持多种集合类型,如 List、Set、Map 等,它们可以作为一对多或多对多关系的容器。`@ElementCollection` 用于映射非实体类属性的集合,而 `@OrderColumn` 可以指定集合元素的排序方式。 6. **级联操作 ...

    hibernate(多对多关系映射)

    在Java的持久化框架Hibernate中,多对多(Many-to-Many)关系映射是一种常见的数据库交互模式,它用于表示两个实体之间复杂的关系。在这个场景中,一个实体可以与多个其他实体相关联,反之亦然。例如,在学生和课程...

    10 映射-- 多对多(老师与学生)

    正确理解和使用Hibernate的多对多映射机制,能帮助我们更高效地构建和维护复杂的数据关系。同时,对源码的学习和工具的运用,也有助于提升我们对ORM框架的掌握程度,从而更好地服务于软件开发工作。

    hibernate-core-5.0.11.Final.jar

    Hibernate,作为Java领域中最著名的对象关系映射(ORM)框架之一,极大地简化了数据库操作,使得开发者能够以面向对象的方式处理数据。本文将重点探讨`hibernate-core-5.0.11.Final.jar`的核心源码,帮助读者深入...

    hibernateORM1-n映射

    在"hibernateORM1-n映射"这个主题中,我们将深入探讨Hibernate中的一对多(1:N)映射关系。 在关系数据库中,一对多关系是指一个表中的记录可以对应另一个表中的多个记录。在Hibernate中,这种关系可以通过配置XML...

    hibernate关系映射1to1及Nto1

    hibernate关系映射系列1,单向1对1映射,意向Nto1 程序说明:生成mysql数据库,建立DB Browser连接后,用户可在程序中自动生成mysql表,非常简单,适合初学者了解hibernate映射机制,有问题可联系flyallen5@hotmail.com

    Hibernate继承关系映射.pdf

    标题:“Hibernate继承关系映射.pdf” 描述:“简明扼要地介绍了Hibernate中继承关系的映射方式,深入探讨了三种不同的映射策略及其优缺点,同时解析了多态查询的概念。” 知识点: ### Hibernate继承关系映射...

    hibernate-release-5.0.0.Final(1).zip

    通过提供一种对象-关系映射机制,Hibernate可以将数据库表映射为Java类,使得数据库操作如同操作普通对象一样简单。 二、Hibernate 5.0.0.Final特性 1. 新的API与改进:5.0版本对JPA 2.1的支持更加完善,提供了更...

    hibernate-orm-master.zip

    Hibernate支持多种关联映射,包括一对一(@OneToOne)、一对多(@OneToMany)、多对一(@ManyToOne)和多对多(@ManyToMany)。这些关联可以通过定义外键或使用中间表来实现,使得对象间的复杂关系得以轻松处理。 ...

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

    本文将深入探讨Hibernate的关联映射学习,包括一对多、多对一、一对一等多种关系映射的方式。 首先,我们来看一下“一对多”(One-to-Many)的映射关系。在Hibernate中,这种关系通常用在一个实体可以拥有多个子...

    Hibernate面试题专栏 - 最全的Hibernate面试题, Hibernate笔试题, Hibernate问题

    【标题】与【描述】提及的是“Hibernate面试题专栏”,主要涵盖了全面的Hibernate面试题、笔试题以及相关问题,这表明我们将要讨论的是Java领域中著名的对象关系映射框架——Hibernate的相关知识。Hibernate是一个...

    hibernate源码release-4.1.4.Final版

    Hibernate,作为一款著名的Java对象关系映射(ORM)框架,极大地简化了Java开发者在数据库操作中的工作。它通过提供对象化的数据访问接口,使得开发者可以更加专注于业务逻辑,而无需过多地关注底层SQL语句的编写。...

    Hibernate映射关系大全

    1. **单向的无连接表的 N:1 (多对一) 关联** 在这种关系中,多个实体(例如 Emp)可以关联到一个单一的实体(例如 Dept)。配置 `&lt;many-to-one&gt;` 标签在多的一方(Emp),指定实体类(Dept)、外键列名(deptid)...

    hibernate-jpa-2.1-api 1.0.0.Final API

    6. **关系映射**:包括一对一、一对多、多对一和多对多的关系,使用@OneToOne, @OneToMany, @ManyToOne 和 @ManyToMany 注解来定义。 7. **懒加载(Lazy Loading)**:一种优化策略,关联的对象在需要时才从数据库...

    hibernate关系映射

    本主题主要探讨了四种基本的关系映射类型:多对多、一对多、多对一以及一对一。 **一、多对多关系映射** 在数据库中,多对多关系意味着一个实体可以与多个其他实体相关联,反之亦然。在Hibernate中,这种关系通过`...

    Hibernate关系映射

    这是本人参照Hibernate官方文档,将里面的关系映射(1-1、N-1、1-N、N-N)全部做了一遍,包括Junit单元测试,读者只需要修改hibernate.cfg.xml中的资源路径和数据库配置就可以正确运行此程序,祝学习愉快。

    hibernate-3.2(1)hibernate-3.2(1)

    - ** associations**:支持一对一、一对多、多对一、多对多等关系的映射。 3. **实际应用** - **实体类设计**:根据业务需求定义实体类,并使用Hibernate注解进行映射。 - **配置文件设置**:配置数据库连接、...

    hibernate-release-4.3.9.Final.rar

    Hibernate,作为Java领域中的一个著名ORM(对象关系映射)框架,它极大地简化了数据库操作,使得开发者能够以面向对象的方式来处理数据库交互。这次我们关注的是Hibernate 4.3.9.Final版本,它包含了“required”...

    hibernate-release-4.3.0.Beta2 lib

    使用 Hibernate 时,应注意合理设计实体关系,避免 N+1 查询问题;利用缓存提高性能,但也要注意缓存同步带来的复杂性;对于复杂查询,结合使用 SQL 以获取最佳性能。 总结,Hibernate 4.3.0 Beta2 的库文件是构建...

Global site tag (gtag.js) - Google Analytics