在hibernate总有noe-to-many、many-to-one、many-to-many的数据关联,但是何时需要使用这些关联呢?所有的书上都讲到了怎么样关联,但是这是在确定了需要进行关联的情况下的,到现在都没有看到有什么书上写了在什么情况下需要关联。
比如,在一个论坛的数据库中,表board表示“版区”,每一个版区都对应了唯一的一个父版区,但是并没有用one-to-one关联,为什么呢?
个人感觉关联在查询数据时比较有用,例如person和personCard从逻辑上是one-to-one的关系,那在对象模型上person类中加入personCard的对象,在配置文件中配置了one-to-one的关系。在查询person对象时与之先关联的personCard就会被查询出来。。我们大多数的设计是先设计表再通过hibernate生成pojo对象,所以对象模型依赖关系模型。对象上的关联显得不是很重要了。个人建议先设计对象模型,再通过配置文件反向自动生成表,这样的话就对关联关系有深刻的认识了。大家共同学习吧。
要看情况而确定是使用哪种关联,就如,你说的论坛数据库中,一个版区只对应一个唯一的父版区,可是一个父版区不一定对应一个版区,所以应该使用一对多(one-to-many),或者是多对一(many-to-one)的关联,而不是使用一对一(one-to-one)
Hibernate的关联关系其实和数据的设计范式类似,可以做如下比较:
one-one 主表与从属表,一般可以具有相同主键,限制主表的一行数据在字表中也只有一行与之对应
one-many A表的主键是B表的外键,切此外键在B中可以不唯一
many-one 把上面反过来
many-many 多对多,如果出现,说明设计上有不合理之处,通过中间表实现one-many
试试