关于hibernate中invers跟cascade的一点看法
2014-03-15 17:37
197 查看
下午动手配了下一个简单的双向一对多关系
一下子居然想不起invers跟cascade的区别了
看了网上那些东西觉得更迷茫了
说invers是维护2个表之间的关系的
但是cascade也是2个表的级联操作
咋一看觉得没区别
后面慢慢想明白了
invers应该是只维护表跟表的关系
跟实际数据操作没关系
而cascade是指跟数据的实际操作有关系 跟表结构没关系
说通俗点就是 比如我有 user 跟 order2个对象是一对多关系
<set name="orders" lazy="true" inverse="true">
<key column="user_id" not-null="true"/>
<one-to-many class="Order" />
</set>
<many-to-one name="user" column="user_id" />
如果在user这端不设置invers=true
order是多的一端 many-to-one默认invers=flase
那么就会报错
因为这样2边都要维护关系
相当于在对应到表的时候
2端都要在order表中新建一个user_id字段
这样数据库就会报错
所以要其中一方交出控制权 要么是1的一方invers=true
要么是多的一方设置insert跟update都是false
而cascade只管你的实际数据的那些级联操作
对表关系没影响
按我的理解简单点说:invers是维护表关系 cascade是维护数据操作之间的关系。
不知道这理解有没有问题 有问题请大家提出来
一下子居然想不起invers跟cascade的区别了
看了网上那些东西觉得更迷茫了
说invers是维护2个表之间的关系的
但是cascade也是2个表的级联操作
咋一看觉得没区别
后面慢慢想明白了
invers应该是只维护表跟表的关系
跟实际数据操作没关系
而cascade是指跟数据的实际操作有关系 跟表结构没关系
说通俗点就是 比如我有 user 跟 order2个对象是一对多关系
<set name="orders" lazy="true" inverse="true">
<key column="user_id" not-null="true"/>
<one-to-many class="Order" />
</set>
<many-to-one name="user" column="user_id" />
如果在user这端不设置invers=true
order是多的一端 many-to-one默认invers=flase
那么就会报错
因为这样2边都要维护关系
相当于在对应到表的时候
2端都要在order表中新建一个user_id字段
这样数据库就会报错
所以要其中一方交出控制权 要么是1的一方invers=true
要么是多的一方设置insert跟update都是false
而cascade只管你的实际数据的那些级联操作
对表关系没影响
按我的理解简单点说:invers是维护表关系 cascade是维护数据操作之间的关系。
不知道这理解有没有问题 有问题请大家提出来
相关文章推荐
- 关于网络安全的一点看法!
- 关于 Swift 的一点初步看法
- 关于技术交流的一点看法
- 关于VS MATLAB混合编程问题中 Initialize失败问题的一点看法
- 关于距离一点简单的看法
- 关于STM32的ST官方的库的一点看法
- \t\t关于数据库里cascade的用法,在MySQL和Hibernate是不同的
- 关于jsp,struts和hibernate的连用的一点心得(初学篇)
- 怎么看待移动互联网时代 关于移动互联网时代的一点个人看法总结 在强烈的产业变化时期,主流观点是不靠谱的 什么是浪潮呢? 小型化、无线化、智能化。
- 关于MCU使用操作系统的一点看法(续)
- 关于高效培训/分享/会议的一点看法
- 关于界面用户体验ui的一点看法
- 关于选择博客网站的一点看法
- 自己关于云计算的一点看法
- 关于短网址系统的一点看法
- 关于shopnc系统使用的一点看法,静态规则
- 关于泡沫经济和实体经济的一点看法
- 关于tarjan求强联通的一点小看法
- 关于人生哲理的一点看法
- MySql和Hibernate中关于cascade的用法