日期:2014-05-18  浏览次数:20659 次

有关hibernater的一点疑问
各个数据表格之间的关系(主要是外键)可以在hibernater创建,也可以在创建数据库表格的时候就建立这种关系,那么这两种方式都是为了数据完整性约束,前一种方式除了可以减少代码量之外还有什么优点么???

请大家指点一下,谢谢~~

------解决方案--------------------
这两者是有本质区别的。

在数据库中设置外键,是为了维护数据完整性(引用完整性)。有了外键约束,当向从表中添加数据时,如果外键值在主表的对应列中并不存在,则会引发异常,阻止数据的添加。——这个是大家都熟知的啦。

而在Hibernate配置关联,是为了查询的方便。
举个例子来说吧:
当你在查一个订单时,你可能同时还会去查用户信息。
如果你想让Hibernate在查订单时,自动把相关的用户信息也给你查出来,你就得在Hibernate中配置这两者的关联啦。如果你不在Hibernate中配置关联,那么你还得自己去写代码来实现用户信息的查询。呵呵。

小结:在Hibernate中配置关联,主要的目的是为了让Hibernate在查询某些数据(比如订单信息)时,能自动把相关的数据(比如用户信息)也查询出来。言外之意就是说,Hibernate的关联是不管引用完整性的,要想实现引用完整性还得靠数据库的外键约束。只不过这两者有那么一点相互对应的意思。呵呵。