hibernate令人费解的inverse配置

     在我学习Hibernate的过程中发现在配置inverse的配置一直是个比较难理解的点,其实很多书上

都有关于inverse的介绍,但是就我看过的这些书而言,我不禁怀疑有些作者自己是不是也真正理解了

inverse的含义和配置。在《深入浅出hibernate》这本书里对inverse是这样解释的:注意术语inverse,

这里直译为“反转”,在hibernate语义中,inverse指定了关联关系中的方向,关联关系中,

inverse=false的为主动方,由主动方负责维护关联关系。这段话本身并没有错,但是我怎么看怎么觉得

找不着北,首先主动方是什么,是某个实体还是这个实体包含的集合?如果是实体的话inverse只是配置

集合时的一个属性,并不是配置这个实体的属性。如果是集合,集合本身是实体的一个属性,我们对这个

属性的访问都要通过实体的get方法,那么这个主动方的名字赋给集合真的合适吗?

 

      最近开始看hibernate的官方文档,对inverse有一段200来字的介绍,看完以后再结合以前的理

解竟有一种豁然开朗的感觉,这段话有一句是这样的:把关联的一端设置为inverse将告诉hibernate忽略

关联的这一端,把这端看成是另外一端的一个镜像。这里的这端和另外一端指的都是维护了实体间关系的

集合(在多对多中,在多对一中也是类似的)。在双向多对多关系中,实体间的关联关系由每个实体的集

合来共同表示或维护,当一个实体的集合被设置为inverse=true时就表示这个集合只是与之相关联的实体

的集合的一个镜像或者说一个影子(相当于数据库里的表和视图的关系),对这个集合的修改所带来的实

体间关系(这里的实体间的关系和表之间的关系是不同的概念)的变化不会被hibernate自动维护到数据

库中去(相当于把控制权交给对方,这里用控制反转来理解倒是挺合情景的),相反inverse=false则会

被维护到数据库中。当然在其他关系中也是类似的。

 

     由此也得一感悟,对于开源框架的学习,与其看各种不同的书还不如就拿来官方的文档反复的看,认真

仔细的琢磨字里行间的意思来的深刻正确有效。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值