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方法。
我的问题不光使上面描述有没有问题,还有,大家是怎么样解决这个问题的啊?你们是选择方案的啊????先回答我上面说得有没有问题???