我已经读过Mkyong撰写的关于《休眠》中一对多关系的伟大的article,我对此表示怀疑。 Mkyong在他的示例中使用了两个类:Stock.java and StockDailyRecord.java

我认为类图必须为:“一只股票有很多stockdialyrecords”,因此,作为数据库实体图,必须为:“一对多股票stockdialyrecords”。

但是Mkyong走得更远,这是我怀疑的地方。他设置了一个名为Stock stock on the StockDialyRecords class的属性。也就是说,他建立了双向关系。这是正确的?我知道,对于ORM,这种方式可以双向执行。但是从图类的角度来看,它就像是说:“一个股票有很多StockDialyRecords,一个股票有一个StockDialyRecords”

我是从建筑概念的角度说的。就像是一个循环或自相矛盾。

最佳答案

它是双向的,因为它表示两种不同的关系:


库存有很多记录(一对多)
记录参考库存(多对多)


从业务角度来看,这两种关系都是有意义的。后者似乎更为重要-每个记录都必须引用其描述的股票。

从技术角度来看,双向关系具有一些优势,例如它允许您从双方构建查询。

10-04 11:52