最近关注了一下nhibernate的inverse属性,网上各种资料众说纷纭,但是感觉多少有点差入,这里总结下自己实践所得结论
inverse的真正作用就是指定由哪一方来维护之间的关联关系。当一方中指定了“inverse=false”(默认),那么那一方就有责任负责之间的关联关系,说白了就是hibernate如何生成Sql来维护关联的记录!
在one to many的默认配置中,是由one放来维护关系,步骤:insert one ->insert many -> update many foreign key。
如果inverse设置为true,步骤 insert one ->insert many,这种情况下双方维护关系是交由many端的,所以需要many端在保存之前需要有one的引用,这样才能保证外键不为空
many to many 同理
由于inverse默认状态下会多一步更新,所以应该使用inverse=true来映射关系
时间: 2024-10-31 20:49:01