`

hibernate多对多单向(双向)关系映射

阅读更多

 

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;
	}

}

 

生成的建表语句和多对多单向关联的一样(在数据库他们的表现一样

 

分享到:
评论
1 楼 Mybeautiful 2013-03-21  
几篇hibernate的文章都写的很好。说的很少,但说的很清楚。

相关推荐

    hibernate单向多对多映射(XML版)

    本主题聚焦于"hibernate单向多对多映射",特别是在XML配置文件中的实现。在这个过程中,我们将探讨多对多关系的原理,以及如何在Hibernate中通过XML配置文件来定义这种关系。 首先,我们需要理解多对多关系的概念。...

    hibernate关联映射详解

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

    hibernate 多对多全注解(单向关联、双向关联)

    hibernate关联映射注解多对多单向关联、

    Hibernate教程04_关系映射之一对一单向外键关联

    **标题详解:**“Hibernate教程04_关系映射之一对一单向外键关联” 在Hibernate框架中,关系映射是数据库表之间的关联在对象模型中的体现。本教程重点讲解了一对一(One-to-One)单向外键关联的实现方法。在数据库...

    一对多单向和双向映射

    总结,一对多单向和双向映射是ORM框架中处理数据库关系的重要方式,它们各有优缺点,需要根据实际需求和项目规模来选择合适的设计。理解并熟练运用这些映射技术,对于提升Java应用程序的数据操作效率和代码质量具有...

    hibernate主键实现一对一单向关联关系源码

    在Java的持久化框架Hibernate中,一对一(One-to-One)关联关系是常见的一种实体关系映射。本主题将深入探讨如何使用Hibernate通过主键来实现一对一的单向关联关系,并提供相关的源码分析。 首先,我们需要理解一对...

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

    总的来说,这篇博客和相关代码示例为开发者提供了一个理解和实现Hibernate中多对多单向关联的起点,帮助他们更好地处理复杂的数据库关系映射。学习和实践这部分内容对于提升Java后端开发能力,特别是使用Hibernate...

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

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

    hibernate多对多双向关联

    多对多双向关联 &lt;br&gt;注意映射规则: &lt;set name="roles" table="t_user_role"&gt;&lt;br&gt; &lt;key column="userid"/&gt;&lt;br&gt; &lt;many-to-many class="com.bjsxt.hibernate.Role" column="roleid"/&gt; &lt;/set&gt;&lt;br&gt; table...

    Hibernate 关联关系映射分类

    综上所述,Hibernate提供了丰富的关联关系映射机制,包括一对一、一对多和多对多关联,每种关联又可以细分为单向和双向,以及基于主键和基于外键的不同实现方式。正确理解和选择合适的关联关系对于构建高效、可维护...

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

    在Hibernate中,一对一唯一外键关联映射是指两个实体之间的关联关系,其中一个实体作为外键,另一个实体作为关联目标。这种关联方式可以分为单向关联和双向关联两种。 单向关联是指一个实体作为外键,关联到另一个...

    Hibernate关联映射

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

    Hibernate一对多单向关联映射

    在Java的持久化框架Hibernate中,一对多关系是常见的实体关联映射方式,它表示一个实体可以与多个其他实体相对应。本篇文章将深入探讨Hibernate中一对多单向关联映射的概念、配置以及其实现方法。 一、概念理解 一...

    Hibernate一对一唯一外键关联映射(单向关联)

    在Java的持久化框架Hibernate中,一对一(One-to-One)关联映射是常见的关系数据库模型在对象模型中的体现。这种关联通常用于表示两个实体之间非常特殊的联系,比如一个人只有一个身份证,或者一个公司只有一个总部...

    hibernate实体关联关系映射

    本文旨在深入探讨Hibernate中的实体关联关系映射技术,主要包括一对一、一对多、多对多等不同类型的关联关系及其在实际开发中的应用技巧。通过本文的学习,开发者可以更好地理解和掌握Hibernate框架下的实体关联关系...

Global site tag (gtag.js) - Google Analytics