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

Hibernate关联学习之---多对多关联

阅读更多

有两个实Student和Course,他们之间的关系是多对多,在数据库上,为了满足3NF,会建立一个中间表Stu_Course来维护Student和Course之间的关系,在Hibernate中,则使用双向多对多来体现这种结构

数据库脚本

 

create table stu(id varchar(32primary key,name varchar(32),cardid varchar(32),age int);
create table course(id varchar(32primary key,name varchar(32));
create table stu_course(stu_id varchar(32),course_id varchar(32));



insert into stu values("1","tom","200701",11);
insert into stu values("2","tomclus","200702",11);
insert into stu values("3","spark","200703",11);
insert into stu values("4","jerry","200704",11);

insert into course values("1","history");
insert into course values("2","computer");
insert into course values("3","music");
insert into course values("4","encomic");
insert into course values("5","politics");

insert into stu_course values("2","1");
insert into stu_course values("2","2");
insert into stu_course values("2","3");
insert into stu_course values("1","3");
insert into stu_course values("1","4");
insert into stu_course values("3","2");
insert into stu_course values("3","3");

 POJO:

 

package Relation.ManytoMany;

import java.util.Set;


public class Stu ...{
  
private String id;
  
private String cardid;
  
private String name;
  
private int age;
  
private Set course;
public Set getCourse() ...{
    
return course;
}

public void setCourse(Set course) ...{
    
this.course = course;
}

public String getId() ...{
    
return id;
}

public void setId(String id) ...{
    
this.id = id;
}

public String getCardid() ...{
    
return cardid;
}

public void setCardid(String cardid) ...{
    
this.cardid = cardid;
}

public String getName() ...{
    
return name;
}

public void setName(String name) ...{
    
this.name = name;
}

public int getAge() ...{
    
return age;
}

public void setAge(int age) ...{
    
this.age = age;
}



}




package Relation.ManytoMany;


import java.util.HashSet;
import java.util.Set;

public class Course ...{
   
private String id;
   
private Set students;
   
private String name;
public String getId() ...{
    
return id;
}

public void setId(String id) ...{
    
this.id = id;
}


public Set getStudents() ...{
    
return students;
}

public void setStudents(Set students) ...{
    
this.students = students;
}

public String getName() ...{
    
return name;
}

public void setName(String name) ...{
    
this.name = name;
}




}

 

Hibernate.cfg.xml

 

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
          "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"
>

<!-- Generated by MyEclipse Hibernate Tools.                   -->
<hibernate-configuration>

<session-factory>
    
<property name="connection.username">root</property>
    
<property name="connection.url">
        jdbc:mysql://localhost:3306/schoolproject?characterEncoding=gb2312
&amp;useUnicode=true
    
</property>
    
<property name="dialect">
        org.hibernate.dialect.MySQLDialect
    
</property>
    
<property name="myeclipse.connection.profile">mysql</property>
    
<property name="connection.password">1234</property>
    
<property name="connection.driver_class">
        com.mysql.jdbc.Driver
    
</property>
    
<property name="hibernate.dialect">
        org.hibernate.dialect.MySQLDialect
    
</property>
    
<property name="hibernate.show_sql">true</property>
    
<property name="current_session_context_class">thread</property>
    
<property name="jdbc.batch_size">15</property>
    
<mapping resource="Relation/ManytoMany/Course.hbm.xml" />
    
<mapping resource="Relation/ManytoMany/Stu.hbm.xml" />



</session-factory>

</hibernate-configuration>

 

Stu.hbm.xml

 

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"
>
<!-- 
    Mapping file autogenerated by MyEclipse - Hibernate Tools
-->
<hibernate-mapping>
<class name="Relation.ManytoMany.Stu" table="stu">
  
<id name="id" unsaved-value="null">
    
<generator class="uuid.hex"></generator>
  
</id>
  
<property name="cardid" type="string"/>
  
<property name="name" type="string"/>
  
<property name="age" type="int"/>
&nb
分享到:
评论

相关推荐

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

    在Java的持久化框架Hibernate中,Many-to-Many关系是一种常见的数据库表之间的关联方式,它表示一个实体可以与多个其他实体进行关联,反之亦然。本文将深入探讨如何在Hibernate中处理Many-to-Many关系的级联保存、...

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

    Hibernate 一对一唯一外键关联映射详解 Hibernate是一种流行的Java持久层框架,提供了多种关联映射方式,其中一对一唯一外键关联映射是一种常见的关联方式。在本文中,我们将详细介绍Hibernate一对一唯一外键关联...

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

    总的来说,这个压缩包提供了丰富的Hibernate关联映射的学习资源,涵盖了从基础到进阶的各种关联类型。通过学习这些示例,你将能够熟练掌握如何在Java项目中使用Hibernate进行数据持久化,并灵活地处理各种数据库关系...

    hibernate-release-5.2.10

    7. **关联映射**:包括一对一(@OneToOne)、一对多(@OneToMany)、多对一(@ManyToOne)、多对多(@ManyToMany)关系的映射,方便处理对象间的关联关系。 8. **延迟加载**:Hibernate的懒加载策略可以在需要时才...

    Hibernate实体关联关系映射--学习总结.pdf

    Hibernate实体关联关系映射--学习总结.pdf

    Hibernate_实体关联关系映射--学习总结

    实体关联关系映射涉及一对一、一对多、多对多等多种形式,而这些映射方式又可以分为单向和双向,依据使用的是主键还是外键,以及是否使用连接表。接下来,我们详细介绍这些知识点。 ###Hibernate实体关联关系映射...

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

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

    hibernate-jpa-2.1-api-1.0.0.final.jar.zip

    `hibernate-jpa-2.1-api-1.0.0.final.jar`是Hibernate对JPA 2.1规范的实现库,它使得开发者能够使用Hibernate的高效功能同时遵循JPA规范。 **1. Hibernate与JPA的关系** Hibernate最初作为一个独立的ORM框架,后来...

    hibernate关联映射详解

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

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

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

    HIBERNATE:Hibernate 学习一--注解方式自动建表

    - `@OneToMany`、`@ManyToOne`、`@OneToOne`、`@ManyToMany`:表示不同类型的关联关系,例如一对多、多对一、一对一和多对多。 3. **配置自动建表**: - 在Hibernate的配置文件(hibernate.cfg.xml)中,可以通过...

    hibernate多对多关联映射

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

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

    在Hibernate的hbm.xml文件中,一对一关系通过&lt;one-to-one&gt;标签,一对多关系通过、、或标签来定义。需要详细指定实体类名、主键列名以及关联的外键列名。 2. 注解配置: 在实体类上直接使用@OneToOne、@OneToMany等...

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

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

    学习hibernate必看ppt--总结的很全面

    【描述】:“添加Hibernate库文件视频操作,01_Hibernate原理及简单使用,一对多,多对一,多对多 关联映射,Hql,hibernate创建事例...” 描述中提到了几个关键的学习点: 1. **Hibernate原理及简单使用**:这...

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

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

    Hibernate关联映射-one to one单向外键关联

    本话题主要探讨的是Hibernate中的一种关联映射方式——一对一(One-to-One)单向外键关联。这种关联模式通常用于两个实体之间存在唯一对应的关系,例如一个用户对应一个唯一的账户。 在Hibernate中,一对一关联可以...

    Hibernate ORM - 一对多双向关联关系

    标题“Hibernate ORM - 一对多双向关联关系”指的是在数据库建模中,Hibernate ORM(对象关系映射)框架如何处理一个实体类(如User)与多个实体类(如Article)之间的关系。在这种关系中,一个用户可以拥有多个文章...

Global site tag (gtag.js) - Google Analytics