`

HIBERNATE多对多配置实例

阅读更多
1. 环 境,student对 lesson,多对多的关系,关系表格:student_lesson(student_id,lesson_id)
2. 配置文件
1) student设为关联维护端
 <set name="lessons" table="student_lesson" inverse=”false”>
      <key column="student_id"/>
      <many-to-many class="Lesson" column="lesson_id" />
   </set>
2) lesson设为逆向关联端
      <set name="students" table="student_lesson" inverse="true">
         <key column="lesson_id"/>
      <many-to-many class="Student" column="student_id"></many-to-many>
    </set>
3. 推荐设置
一般的将教为主动的一端,配置为关联正向端,本例中学生比课程更为主动,一般不使用 cascade=”true”选项,因为课程不以学生而存在,增加学生时候不会处理课程资料只处理学生和课程的关系,因此 inverse=”false”,cascade=”true”,在增加学生的时候,必须选择库存中的课程而后在存储到学生中
 
在对多多的关 联中无法设置 CASCADE 属性
学生配置: <set name="lessons" table="student_lesson" inverse="false">
              <key column="student_id"/>
              <many-to-many class="Lesson" column="lesson_id" />
          </set>
期望结果,如 果删除学生,参与的课程的资料不删除,与课程的参与关系将自动删除,这个起到与级连相似的结果,同样,选修和退修课程在学生端操作
 
4. 新增学生
Student student = new Student();
student.setStudentId("007");
student.setName("ale");
session.saveOrUpdate(student);
5. 新增课程
    Lesson lesson = new Lesson();
    lesson.setLessonId("20070103");
    lesson.setLessonName(" 激光");
    session.saveOrUpdate(lesson);
6. 学生选修课程
Lesson lesson = null;
Student student = (Student)session.load(Student.class,"005");
lesson = (Lesson)session.load(Lesson.class,"20070101");
student.getLessons().add(lesson);
lesson = (Lesson)session.load(Lesson.class,"20070103");
student.getLessons().add(lesson);
   
7. 学生退出课程选修
Lesson lesson = null;
Student student = (Student)session.load(Student.class,"005");
lesson = (Lesson)session.load(Lesson.class,"20070101");
student.getLessons().add(lesson);
lesson = (Lesson)session.load(Lesson.class,"20070103");
student.getLessons().remove(lesson);
session.saveOrUpdate(student);
   
8. 取消课程
   Lesson lesson = (Lesson)session.load(Lesson.class,"20070103");
   session.delete(lesson);
   由于配置了学生和课程双向维护关系,删除课程时,也删除了学生与课程的关系
9. 删除学生资料
   Student student = (Student)session.load(Student.class,"005");
   session.delete(student);
   将级连删除与课程的关系

http://www.java1995.cn/blog/item/109
分享到:
评论

相关推荐

    hibernate一对多、多对一、一对一、多对多配置实例

    本文将深入探讨Hibernate中的一对多、多对一、一对一以及多对多四种关系映射的配置实例,帮助开发者更好地理解和运用这些关系。 ### 一对多关系(One-to-Many) 在数据库设计中,一对多关系是最常见的一种关联,...

    Hibernate的多对一和一对多操作实例

    通过上述实例,我们可以清晰地看到在Hibernate框架中如何实现“多对一”和“一对多”的关系映射。这种映射机制不仅简化了实体类之间的关联,还提供了强大的数据持久化支持,使得开发者能够更专注于业务逻辑的实现,...

    Hibernate多对多实例+数据库代码

    标题"Hibernate多对多实例+数据库代码"揭示了我们将在讨论一个使用Hibernate框架实现的多对多关系映射的实际案例。在这个实例中,开发人员将两个或多个实体之间的复杂关联转化为简单易懂的数据库操作。描述中提到...

    hibernate一对多实例

    标题中的“hibernate一对多实例”指的是在Java编程中使用Hibernate框架处理数据库关系时的一对多关联映射。Hibernate是Java领域中的一个流行对象关系映射(ORM)框架,它允许开发者用面向对象的方式操作数据库,从而...

    hibernate多对多

    在Java的持久化框架Hibernate中,多对多(Many-to-Many)关系是数据库中常见的关联类型,它允许一个实体实例对应多个其他实体实例,反之亦然。在本案例中,我们将深入探讨如何使用Hibernate来处理多对多的关系映射,...

    JAVA 使用hibernate配置实例

    本教程将详细讲解如何在Java项目中配置和使用Hibernate,包括在普通Java工程和Maven工程中的配置实例。 首先,我们需要了解Hibernate的核心概念。Hibernate是一个开源的ORM框架,它可以将Java类与数据库表进行映射...

    hibernate 一对多,两个实例项目

    在Java的持久化框架Hibernate中,一对多关系是数据库中常见的关联类型,它表示一个...通过这两个实例,我们可以学习到如何配置、操作以及优化一对多关系,从而在实际开发中更有效地利用Hibernate进行数据持久化操作。

    hibernate 多对多映射实例,学生 选课

    在这个“hibernate 多对多映射实例,学生 选课”项目中,我们将探讨如何使用Hibernate处理多对多关系,以及如何构建一个学生选课的系统。 首先,我们要理解多对多关系。在现实生活中,学生和课程之间就是一个典型的...

    hibernate多对多的简单实现

    在Java的持久化框架Hibernate中,多对多(Many-to-Many)关系是数据库中常见的关联类型,它允许一个实体实例对应多个其他实体实例,反之亦然。在本项目"hibernate多对多的简单实现"中,我们看到的是学生(Student)...

    hibernate实例(一对多,多对一)

    在这个“hibernate实例(一对多,多对一)”的主题中,我们将深入探讨两种重要的关联关系:一对一(One-to-One)和一对多(One-to-Many)。 **一对一关联(One-to-One)** 在一对一关联中,一个实体与另一个实体之间...

    Hibernate双向一对多经典实例

    **标题:“Hibernate双向一对多经典实例”** 在Java开发中,Hibernate是一个强大的对象关系映射(ORM)框架,它简化了数据库操作,使得开发者能够用面向对象的方式处理数据。本实例将聚焦于Hibernate中的一对多关系...

    Hibernate 多表映射关系配置

    以下是如何配置 Hibernate 的多对多映射关系。 1. 数据库建表 假设我们有两张表,`users` 和 `roles`,它们通过 `user_roles` 这个中间表进行关联。 ```sql CREATE TABLE users ( user_id INT AUTO_INCREMENT ...

    hibernate中一对多配置

    与一对多相反,多对一关系是多个子类实例指向一个父类实例。在上面的用户和订单例子中,如果我们将焦点放在订单上,每个订单都有一个关联的用户,这就是多对一关系。 1. **配置方式:** - 映射文件:在父类(用户...

    hibernate 多对一映射关联配置

    本文将深入探讨Hibernate中的多对一映射关联配置,并结合具体的文档心得进行讲解。 首先,我们要了解多对一映射的基本概念。在数据库设计中,如果一个表(实体A)的某一列是另一个表(实体B)的主键,那么就存在...

    eclipse项目Hibernate实例

    8. **实体关系映射**:学习如何处理一对一、一对多、多对一、多对多的关联关系,如使用@OneToOne、@OneToMany、@ManyToOne、@ManyToMany等注解。 9. **缓存机制**:Hibernate提供了第一级缓存(Session级别的)和第...

    Hibernate一对多 多对一实例

    本实例将深入探讨“一对一”(OneToOne)、“一对多”(OneToMany)以及“多对多”(ManyToMany)这三种关系映射的实现方法。了解这些关系对于构建复杂的业务系统至关重要,因为它们帮助我们更好地理解和管理数据间...

    hibernate实例连oracle

    2. **Hibernate配置**:在`hibernate.cfg.xml`文件中设置数据库连接参数,如URL、用户名、密码、驱动类等。 3. **连接池配置**:配置c3p0的属性,如初始和最大连接数、超时时间、测试查询等,以优化资源管理。 4. **...

    hibernate的多对多配置

    在Java的持久化框架Hibernate中,多对多(Many-to-Many)关系是数据库中常见的关联类型,允许一个实体实例对应多个其他实体实例,反之亦然。本篇将深入探讨如何在Hibernate中配置多对多关系,特别是通过hibernate....

Global site tag (gtag.js) - Google Analytics