复习一对多的关系 ,(不讲多对一的关系) 老师 课程 一个老师可以上多个课程,一个课程,只能由一个老师来上 对象设计: 站在老师的角度 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") ) |
|
来自: 昵称27831725 > 《hibernate学习问题》