正确理解hibernate的inverse属性

简介:
1) inverse 中提及的side其实是指一个类或者表的概念,双向关联其实是指双方都可以取得对方的应用。 

2)维护关系这个名词还是稍显模糊或者晦涩。我们一般说A类或者A表(这里的表的是指多对多的连接表)有责任维护关系,其实这里的意思是说,我在应用在更新,创建,删除(读就不用说了,双向引用正是为了方便读而出现)A类或者A表时,此时创建的SQL语句必须有责任保证关系的正确修改。 

3) inverse=false 的side(side其实是指 inverse=false 所位于的class元素)端有责任维护关系,而 inverse=true 端无须维护这些关系。 

4)我们说inverse设立不当会导致性能低下,其实是说inverse设立不当,会产生多余重复的SQL语句甚至致使JDBC exception的throw。这是我们在建立实体类关系时必须需要关注的地方。一般来说,inverse=true是推荐使用,双向关联中双方都设置inverse=false的话,必会导致双方都重复更新同一个关系。但是如果双方都设立inverse=true的话,双方都不维护关系的更新,这也是不行的,好在一对多中的一端:many-to-one默认是inverse=false,避免了这种错误的产生。但是对多对就没有这个默认设置了,所以很多人经常在多对多的两端都使用inverse=true,结果导致连接表的数据根本没有记录,就是因为他们双分都没有责任维护关系。所以说,双向关联中最好的设置是一端为inverse=true,一端为inverse=false。一般inverse=false会放在多的一端,那么有人提问了,many-to-many两边都是多的,inverse到底放在哪儿?其实hibernate建立多对多关系也是将他们分离成两个一对多关系,中间连接一个连接表。所以通用存在一对多的关系,也可以这样说:一对多是多对多的基本组成部分



本文转自左正博客园博客,原文链接:http://www.cnblogs.com/soundcode/archive/2010/12/20/1911935.html,如需转载请自行联系原作者

目录
相关文章
|
SQL Java 数据库连接
Hibernate【inverse和cascade属性】知识要点
Hibernate【inverse和cascade属性】知识要点
160 0
Hibernate【inverse和cascade属性】知识要点
|
缓存 Java 数据库连接
Hibernate一对多关联的两个关键属性cascade和inverse(十一)
Hibernate一对多关联的两个关键属性cascade和inverse(十一)
128 0
Hibernate一对多关联的两个关键属性cascade和inverse(十一)
|
Java 数据库连接
hibernate 中的 inverse情况
hibernate 中的 inverse情况
83 0
|
SQL 存储 缓存
hibernate(六) cascade(级联)和inverse关系详解
写这篇文章之前,自己也查了很多的资料来搞清楚这两者的关系和各自所做的事情,但是百度一搜,大多数博文感觉说的云里雾里,可能博主自己清楚是怎么一回事,但是给一个不懂的人或者一知半解的人看的话,别人也看不懂其中的关系,所以我自己写博文的时候,会尽量用通俗通俗在通俗的语言去描述一个概念,希望能尽自己的力量去帮助你们理解。光看我的是不行的,最关键的是要自己动手去实践一遍,能得出一样的结论,那就说明懂了,在我不懂的时候,我就去自己实现它,一次次尝试,慢慢的就总结出规律了。
137 0
|
Java 数据库连接 数据库
spring-boot工程中,jpa下hibernate的ddl-auto的各种属性
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34173549/article/details/80871845 jpa...
1103 0
|
SQL Java 数据库连接
|
Java 数据库连接
hibernate笔记--cascade级联以及inverse属性
cascade :    不管是单向多对一还是一对多,或者是双向的一对多关系,在一的一端映射文件中有一个set标签,在多的一端有many-to-one标签,拿前几篇笔记里讲的Grade和Student举例,此标签下都有一个cascade属性:   Grade.
791 0
|
算法 Java 关系型数据库
hibernate id属性 generator class=""详解
原文来自:http://blog.csdn.net/yufaw/article/details/7680403 “assigned”     主键由外部程序负责生成,在   save()   之前指定一个。
1030 0
|
Java 数据库连接 数据库
沫沫金::hibernate实体增加属性后不能自动生成表的问题研究
  今天做项目的时候使用的是  实体--> 数据库表  的映射采用Hibernate自动生成表结构,控制台打印的见表语句都是正确的额。但是在数据库中有部分表找不到。最后发现是因为数据库表的字段和数据库中的关键字冲突,修改掉这些关键字字段就可以正常生成表了 写到这里,希望能帮到需要的...
633 0
|
Java 数据库连接
Hibernate让Model支持关联扩展属性
Hibernate让Model支持关联扩展属性: select new Jxc(a,b.mc) from Jxc as a,btb as b 在Model中创建构造方法: Jxc(Jxc jxc ,String mc){ BeanUtilsBean.