日期:2014-05-20  浏览次数:20633 次

hibernete关系映射的选择
情况一:
一个表位user表,有uid,username,password字段;
另一个表储存user扩展信息,user_data,有age,sex,adress等字段。
这里应该选择双向one2one关系映射吗?

大家可以详细讲解下什么时候用单向one2one,什么时候用双向one2one。
什么时候用one2many,什么时候用many2one。
另外,可以用one2many的,可以调换过来使用many2one吗?

------解决方案--------------------
one to one 一一对应
两张表中有且只有一条数据相对应
单向 -- 比如论坛的登录,用户只有登录后才能看到个人信息,表和你说的一样,通过两张表的uid关联。(不过很多网站应该是把它设计为一张表)
双向 -- 比如银行,可以通过银行卡找到用户,也可以通过用户身份证找到卡号,这样就是双向(前提一张身份证只能开一张卡,如可以开多张卡,那就是 One(身份证) to many (银行卡) 也是双向)。
根据参照物不同
银行卡 many to one 身份证
身份证 one to many 银行卡
单向的一对多 比如货单,一个单对应仓库中的很多货物,而根据货物不能找到对应的订单。 
个人愚见,还请多指教