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

问题讨论:hibernate中one-to-one、one-to-many、many-to-one的设计有必要吗?
本人接触hibernate时间不长,但觉得在设置映射文件时one-to-one、one-to-many的设计不是很能用的上。
我的理解这种设计主要目的是将表与表之间的主外键关系映射到持久类中,其实就相当于数据库的关系图。
这样当用户在更改主表数据时会级联到从表数据。
这样做达到了两个作用:
1、如果允许级联更新,当用户更改主表的主键值时会自动修改从表主键值。
2、如果不允许级联更新,当用户更改主表的主键值时会抛出异常。
1:这样虽然维护了数据的一致性,但是由于级联式隐形的,也就是说用户也许本身并不想删除从表数据,这样做岂不是不安全。
2:这样做虽然保证了数据的一致性,但由于表之间的关联非常复杂,如果没有明确的提示用户使无法理解为什么不允许更改。
但是这种提示hibernate能做到非常精准的业务提示吗?
不知道我理解的对不对,请高手给予指点。
注:本人不是说这种设计没有用,而是说不是很实用。真正的业务关联还是得靠java代码维护更友好。

------解决方案--------------------
呵呵,楼主重复发贴子了。
还是下面这个回答:
楼主还没有仔细研究hibernate关联映射的内容。把orm映射仅仅当作一种sql的封装。
其实orm的关键作用就是将关系数据映射成对象数据,使我们在增删查改时可以用面向对象的角度去操作数据,可以利用封装、继承、多态等一切对象特性。
建议楼主去看看这个开源文档:《深入浅出Hibernate》夏昕等著,具体名字可能有出入,网上应该到处都是,自己搜一下。