2010-6-11对Hibernate中inverse与cascade的区别的感性认识

  用Hibernate很久了,inverse和Casecade也困扰了一阵,不过在看了些文档资料后有一些小的感悟:

1)首先inverse和casecade都是只有在表与表之间有级联关系时才会用上(一般的第一句总是废话)。

2)既然是表与表之间有级联才会有inverse和casecade,因而其实最后inverse和casecade的区别也会在表上有所区别。

3)拿比较有代表性的多对多。其实多对多在数据库中的表现会发现:至少要有三个表才能建立起多对多的关系。假如有级联关系的2个表表A和表B,那么表A与 表B之间必然有个表C作为A与B的中间表,而表C一般为三个字段---ID ,表A外键,表B外键。因而其实表C的作用只有一个-----建立起A与B的级联关系

4)假设你现在是对A表作添加操作。那么你会发现你对inverse的改变只会改变中间表C的添加与否,同样的你对casecade的改变只会有表B作出 相对应的变化。-------因而结论inverse操作的中间表,也就是级联关系。而casecade操作的级联表而非中间表。

5)多对多是由三个表组成的。但是一般的级联关系都是由2个表组成的。不过我个人总是将2个表拆开看-----主表,级联表(非外键的所有列),中间表 (一般指外键)。这样看的话就可以套用多对多的情况。

总结:当我们处理Hibernate的级联关系时,其实可以多从数据库的角度考虑。就像java最后还是需要调用内存,硬盘一样。你对Hibernate 的操作其实最后都会转化成你对数据库的操作。因而我们思考Hibernate的某些原因时说不定在数据库中就会找到答案。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值