hibernate----inverse

来源:互联网 发布:js如何给div加边框 编辑:程序博客网 时间:2024/05/18 21:50

hibernate----inverse

inverse=true的含义: 由双向关联另一方维护该关联,己方不维护该关联(只能进行查询操作)。

要注意的一点:在双向关联的关系中,映射的column(和table)的值要一致(即要用相同的表名和列名),不然设置为inverse="true"的这方将失去这个双向关系,而变成了一个单向关联。

inverse="false"是默认的值,如果设置为true 则表示对象的状态变化不会同步到数据库 ;设置成false则相反; 通过设置来决定是有谁来维护表和表之间的关系的。
one-to-many--一般one方设置inverse设置为true,
many-to-many---一般不经常改变的设置为true

Inverse和Cascade的比较

Inverse:负责控制关系,默认为false,也就是关系的两端都能控制,但这样会造成一些问题,更新的时候会因为两端都控制关系,于是重复更新。一般来说有一端要设为true。
Cascade:负责控制关联对象的级联操作,包括更新、删除等,也就是说对一个对象进行更新、删除时,其它对象也受影响,比如我删除一个对象,那么跟它是多对一关系的对象也全部被删除。
举例说明区别:删除“一”那一端一个对象O的时候,如果“多”的那一端的Inverse设为true,则把“多”的那一端所有与O相关联的对象外键清空;如果“多”的那一端的Cascade设为Delete,则把“多”的那一端所有与O相关联的对象全部删除。



原创粉丝点击