关于对CMP关系的操作

henry.t

cource----student 典型的多对多问题

数据库表: cource------student
过渡表: middle,分别包含两个关系表的主键,与他们有主外键关系

CMP: courceBean-----studentBean 多对多关系

现在目的是:增加或删除一条关系,即:在middle表中增加一条记录(以前没有)

现在做多对多有两种方案:注意,如果以下描述出现错误,请指出

1,使CMP studentBean 和 courceBean 互相含有对方的COLLECTION,不对middle表建立CMP。
这样做可以直接取得对方相关的BEAN,也就是可以getCources(),返回所有该学生选的课程,反之也方便,但是,如果想对关系做UPDATE,那就麻烦了,
比如,我要增加一条关系(在middle表中增加一条记录),这种方法只有
setCources()一种,一次设置全部关系,那我必须自己写一个用SQL插入数据库的方法,(不用再把它SET进关系COLLECTION里面,可以自动识别的),但是这样好像破坏了结构,感觉应该用CMP提供的方法完成对数据库的操作。
请问用这个方案的高手使怎么解决这个UPDATE关系的问题呢?是不是像我说的那样写SQL语句完成的啊??

2,对middle表写一个CMP,使一个多对多变成两个一对多。
那么如果要增加一条STUDENT---COURCE的关系,就找到middleHome,然后create就可以了,不用写SQL方法,但是,比如:一个STUDENT要取得相关COURCE,就必须:
先getMiddles()返回COOLECTION,然后一次从每个COLLECTION里面取得一个COURCE组装成COURCE的COLLECTION,再返回给STUDENT,看起来比较麻烦一点,不过好像还是不用写额外的SQL方法。

我的问题不光使上面描述有没有问题,还有,大家是怎么样解决这个问题的啊?你们是选择方案的啊????先回答我上面说得有没有问题???

banq
2004-02-28 13:56

还有第3个方案,使用CMR,我认为是最好的选择,将middle作为CMR表。
具体做法可参加我的教程。

henry.t
2004-02-28 20:31

那我想BANG老大总可以先告诉我们什么是CMR吧?!

henry.t
2004-02-28 21:17

还有第3个方案,使用CMR,我认为是最好的选择,将middle作为CMR表。
==============================================================
我就是对上面的话不明白,请BANG解释一下。
使用CMR?什么啊?CMR意思是容器管理关系,我不久是用的这个吗???
将MIDDLE作为CMR表???这个又是什么啊?我难道不是这样做的??我就是让MIDDLE表作为外键表包含STUENT和COURCE的主键而显示他们之间的关系的啊,难道这个不叫CMR表??请回答我这几个问号!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

henry.t
2004-02-29 14:09

BANG,回答我上面的问题!!!!!!!!!

henry.t
2004-03-01 20:07

说实话,BANG你好现实啊,就这么一句话就要我买你的书啊????

banq
2004-03-03 09:35

请理解,我不可能24小时在论坛上,也不可能看所以的帖子,CMR资料google有很多,你可以搜索一下,当然你的两种方式也是可行的,如果你想探寻完美方案,我推荐CMR,可以完美之路不是一下子能达到的噢。