分享

hibernate一对多,多对多关系

 昵称27831725 2017-10-29
复习一对多的关系 ,(不讲多对一的关系)

老师 课程 

一个老师可以上多个课程,一个课程,只能由一个老师来上

对象设计:

站在老师的角度
Set courses - getCourses()

站在课程的角度

teacher getTeacher()


数据库的设计:

在多方增加一个外键

课程id  课程名称  ...  教师id
1       c语言           1
2       java            2


错误的设计

教师id 教师名称  ....  课程id
1      张老师          1,2         (不符合数据库设计规范)


另外,有mappedBy的对象方,其实体表中不会生成外键

=========================================================

多对多关系

 学生 和 课程

 一个学生可以选择多门课程,一门课程,也可以被多个学生选择

学生
Student(id,name,sex,pwd,phone,grade,photo)

课程
Course(id,name,type,hours)

数据库的设计:

中间表
student-course(sid,cid)

 数据库表关系
 sid cid
 1 1
 1 2
 2 1
 2 2

 对象关系:

 一个学生可以选择多门课程,一门课程可以被多个学生选择
 
 1.站在学生的角度,有一个属性叫做courses
   可以通过getCourses(),得到自己选择的所有课程

 2.站在课程的角度,有一个属性叫做students
   可以通过getStudents,得到选择这门课程的所有学生

选择一方来维护关联关系,叫做主表

维护关联关系的一方

通过学生来添加课程
student.setCourses(....)

或者

通过课程来添加学生
course.setStudents(...)

http://blog.csdn.net/oyzl68/article/details/8176009

@ManyToMany
@JoinTable(
name="student_course", 
joinColumns={@JoinColumn(name="sid")}, 
inverseJoinColumns={@JoinColumn(name="cid")} 

@JoinTable(
   name="student_course", 
   joinColumns=@JoinColumn(name="sid"),
   inverseJoinColumns=@JoinColumn(name="cid")






    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多