关于对CMP关系的操作

04-02-28 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,回答我上面的问题!!!!!!!!!

猜你喜欢
2Go 1 2 下一页