您的位置:首页 > 移动开发

谈 Hibernate Annotation @mappedBy含义

2015-01-21 11:40 337 查看
“一对多/多对一”是数据库表关系中最常见的一种关系。两张表通过外键进行关联,实现表达“一对多/多对一”关系。外键通常位于”多方”表中。

用学生选课的例子 来说一下自己对这个注释@mappedBy的理解。

关系:

学生Student 多方--------课程Course 多方

学生 Student多方--------老师 Teacher一方

mappedBy 指向的是放弃维护关系的一方。 学生与课程,即课程类放弃维护关系,外键在Student类中。学生与老师,即老师Teacher放弃维护关系,外键在学生Student类中。

@Entity
@Table(name="t_student")
public class Student {
@Id
@GeneratedValue
private Integer id; //主键Id
private String uname; //学生名字
private String pwd;// 密码
private String phone;//手机号码
private String email;//邮箱

/*
* 外键通常放在 多方表中,放在学生表中.course放弃维护
*/
@ManyToMany
private Set<Course> courses = new HashSet<Course>();

@ManyToOne
private Teacher teacher;


@Entity
@Table(name="t_course")
public class Course {
@Id
@GeneratedValue
private Integer id;
private String courseDesc;//课程描述
private String courseNo;//课程代号

//Course放弃 维护外键。
@ManyToMany(mappedBy="courses")
private Set<Student>students= new HashSet<Student>();


@Entity
@Table(name="t_teacher")
public class Teacher {
@Id
@GeneratedValue
private Integer id;
private String name;//姓名
private String pwd;//密码
private String phone;//手机

/*
* 外键一般放在 多方表中.
* mappedBy  指向的是  放弃  维护  关系的类.即,Teacher 类 放弃 维护关系 ,外键 放在Student类中,让学生来维护 。
*/
@OneToMany(mappedBy="teacher")
private Set<Student>students = new HashSet<Student>();



数据库表单


course类表单


学生类表单


学生 -老师关系表
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: