Hibernate中的一个数据库问题

Rick_ang 2006-08-12 08:42:10
有一个设计上的问题,比如我有1个学生类Student,有一个课程类Course,学生与课程是多对多的关系,如果要使用many-to-many标签的话,Hibernate会自动生成一个中间表,现在我需要对学生的课程给个成绩,这个成绩不应当单独属于学生或者课程类,而应当在中间表中,由一对学生-课程来决定一个成绩。问题是,如果我让Hibernate自动生成中间表的话,成绩该如何去存取?如果把中间表也做成一个类,把学生(课程)与中间表的关系改成一对多的关系,好象学生与课程之间的联系就显得不太紧凑了。这个POJO和数据库该怎么设计才既符合面向对象思想又能方便地存取呢?
...全文
337 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
ngtoo_0 2006-08-15
  • 打赏
  • 举报
回复
学到现在了你怎么在建表上还能有多对多的关系呢?
为什么不能先搞个中间表,把表关系搞成一对多的,要是一对多的话就不存在你问题!
回头试想一下吧!
bblood 2006-08-15
  • 打赏
  • 举报
回复
同意wizardblue()的说法,学生跟课程本来是多对多的关系,如果你不想用多对多,那就再引如考试的概念,这样学生跟考试,以及课程对考试都是一对多的关系了,也就是把一个多对多关系分成两个一对多的关系.
zhmt 2006-08-14
  • 打赏
  • 举报
回复
up!

mark!
zhb1208 2006-08-14
  • 打赏
  • 举报
回复
我同意zhang2415所说的
Rick_ang 2006-08-14
  • 打赏
  • 举报
回复
其实我一度倾向于wizardblue() 的方法,因为如果用many-to-many的关系的话对中间表的读取就显得不那么“面向对象”了是吧?大家讨论下这个是不是最好的方法了呢
zhang2415 2006-08-13
  • 打赏
  • 举报
回复
同意楼上的各位,但楼主要尽量少用多对多的关系,采取延迟加载(Lazy Loading)来避免无谓的开支
libin19830213 2006-08-12
  • 打赏
  • 举报
回复
学生表:

id student_name other_column

课程表:

id class_name

中间表:

id student_id class_id result

在现在的数据库设计模式中,多对多的关系只能采用中间表来解决
wizardblue 2006-08-12
  • 打赏
  • 举报
回复
好像我们这边的做法是再弄一个考试的概念,一场考试对应一门课程,一场考试对应多个学生,其实根据你的理解的话也就相当于另外再自己弄一个映射表(课程与学生一对多)
z_qingguo2008 2006-08-12
  • 打赏
  • 举报
回复
多对多的关系只能有中间表来解决.先学生表先和中间表映射多对一(mang-to-one)关系.在中间表和课程表映射一对多双向自己关联关系,估计可以解决你的问题...
findu_at 2006-08-12
  • 打赏
  • 举报
回复
同意楼上

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧