1、多对多单向关系映射(学生知道自己要上的课程,课程不知道有哪些学生上自己)
package yingjun.model; import java.util.HashSet; import java.util.Set; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.JoinColumns; import javax.persistence.JoinTable; import javax.persistence.ManyToMany; @Entity public class Student { private int sid; private String name; private Set<Course> courses=new HashSet<Course>(); @Id @GeneratedValue public int getSid() { return sid; } public void setSid(int sid) { this.sid = sid; } public String getName() { return name; } public void setName(String name) { this.name = name; } @ManyToMany @JoinTable(name="s_c", joinColumns={@JoinColumn(name="student_id")}, //指向student表中的外键 inverseJoinColumns={@JoinColumn(name="course_id")} //指向course表中的外键 ) public Set<Course> getCourses() { return courses; } public void setCourses(Set<Course> courses) { this.courses = courses; } }
package yingjun.model; import java.util.HashSet; import java.util.Set; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; @Entity public class Course { private int cid; private String name; @Id @GeneratedValue public int getCid() { return cid; } public void setCid(int cid) { this.cid = cid; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
create table Course ( cid integer not null auto_increment, name varchar(255), primary key (cid) ) create table Student ( sid integer not null auto_increment, name varchar(255), primary key (sid) ) create table s_c ( student_id integer not null, course_id integer not null, primary key (student_id, course_id) ) alter table s_c add index FK1BB977CE40B3 (course_id), add constraint FK1BB977CE40B3 foreign key (course_id) references Course (cid) alter table s_c add index FK1BB9776D99621 (student_id), add constraint FK1BB9776D99621 foreign key (student_id) references Student (sid)
2、多对多双向关系映射(学生知道自己要上的课程,课程也知道有哪些学生上自己)
package yingjun.model; import java.util.HashSet; import java.util.Set; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.JoinTable; import javax.persistence.ManyToMany; @Entity public class Student { private int sid; private String name; private Set<Course> courses=new HashSet<Course>(); @Id @GeneratedValue public int getSid() { return sid; } public void setSid(int sid) { this.sid = sid; } public String getName() { return name; } public void setName(String name) { this.name = name; } @ManyToMany @JoinTable(name="s_c", joinColumns={@JoinColumn(name="student_id")}, //指向student表中的外键 inverseJoinColumns={@JoinColumn(name="course_id")} //指向course表中的外键 ) public Set<Course> getCourses() { return courses; } public void setCourses(Set<Course> courses) { this.courses = courses; } }
package yingjun.model; import java.util.HashSet; import java.util.Set; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.ManyToMany; @Entity public class Course { private int cid; private String name; private Set<Student> students=new HashSet<Student>(); @Id @GeneratedValue public int getCid() { return cid; } public void setCid(int cid) { this.cid = cid; } public String getName() { return name; } public void setName(String name) { this.name = name; } public void setStudents(Set<Student> students) { this.students = students; } @ManyToMany(mappedBy="courses") public Set<Student> getStudents() { return students; } }
生成的建表语句和多对多单向关联的一样(在数据库他们的表现一样)
相关推荐
本主题聚焦于"hibernate单向多对多映射",特别是在XML配置文件中的实现。在这个过程中,我们将探讨多对多关系的原理,以及如何在Hibernate中通过XML配置文件来定义这种关系。 首先,我们需要理解多对多关系的概念。...
包含《多对多双向关联映射》《多对一单向关联映射》《多对一双向关联映射》《一对多单向关联映射》等文档,并有图解及例子,非常适合新手学习,尤其是刚刚接触hibernate,对映射关系不清楚的。。。。
在本章中,我们将深入探讨Hibernate中的关联映射,包括一对多、多对一以及多对多的关系。这些映射关系对于理解如何在Java应用程序中有效地管理数据库对象至关重要。 首先,我们来解决描述中提到的问题。`...
hibernate关联映射注解多对多单向关联、
**标题详解:**“Hibernate教程04_关系映射之一对一单向外键关联” 在Hibernate框架中,关系映射是数据库表之间的关联在对象模型中的体现。本教程重点讲解了一对一(One-to-One)单向外键关联的实现方法。在数据库...
总结,一对多单向和双向映射是ORM框架中处理数据库关系的重要方式,它们各有优缺点,需要根据实际需求和项目规模来选择合适的设计。理解并熟练运用这些映射技术,对于提升Java应用程序的数据操作效率和代码质量具有...
在Java的持久化框架Hibernate中,一对一(One-to-One)关联关系是常见的一种实体关系映射。本主题将深入探讨如何使用Hibernate通过主键来实现一对一的单向关联关系,并提供相关的源码分析。 首先,我们需要理解一对...
总的来说,这篇博客和相关代码示例为开发者提供了一个理解和实现Hibernate中多对多单向关联的起点,帮助他们更好地处理复杂的数据库关系映射。学习和实践这部分内容对于提升Java后端开发能力,特别是使用Hibernate...
本主题聚焦于“Hibernate双向一对一关联映射”的注解实现,这是一种高级的数据库设计模式,用于处理两个实体之间一对一的关系。 在Hibernate中,一对一关联映射分为单向和双向。单向一对一映射通常涉及一个实体持有...
多对多双向关联 <br>注意映射规则: <set name="roles" table="t_user_role"><br> <key column="userid"/><br> <many-to-many class="com.bjsxt.hibernate.Role" column="roleid"/> </set><br> table...
综上所述,Hibernate提供了丰富的关联关系映射机制,包括一对一、一对多和多对多关联,每种关联又可以细分为单向和双向,以及基于主键和基于外键的不同实现方式。正确理解和选择合适的关联关系对于构建高效、可维护...
在Hibernate中,一对一唯一外键关联映射是指两个实体之间的关联关系,其中一个实体作为外键,另一个实体作为关联目标。这种关联方式可以分为单向关联和双向关联两种。 单向关联是指一个实体作为外键,关联到另一个...
9. Hibernate 一对一外键双向关联、主键双向关联、连接表双向关联、一对多外键双向关联、一对多连接表双向关联、多对多双向关联: 这些关联方式与单向关联类似,区别在于两个实体类都知道彼此的关联。在双向关联中...
在Java的持久化框架Hibernate中,一对多关系是常见的实体关联映射方式,它表示一个实体可以与多个其他实体相对应。本篇文章将深入探讨Hibernate中一对多单向关联映射的概念、配置以及其实现方法。 一、概念理解 一...
在Java的持久化框架Hibernate中,一对一(One-to-One)关联映射是常见的关系数据库模型在对象模型中的体现。这种关联通常用于表示两个实体之间非常特殊的联系,比如一个人只有一个身份证,或者一个公司只有一个总部...
本文旨在深入探讨Hibernate中的实体关联关系映射技术,主要包括一对一、一对多、多对多等不同类型的关联关系及其在实际开发中的应用技巧。通过本文的学习,开发者可以更好地理解和掌握Hibernate框架下的实体关联关系...