正确理解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建立多对多关系也是将他们分离成两个一对多关系,中间连接一个连接表。所以通用存在一对多的关系,也可以这样说:一对多是多对多的基本组成部分
正确理解hibernate的inverse属性相关推荐
- Hibernate中inverse属性与cascade属性
Hibernate集合映射中,经常会使用到"inverse"和"cascade"这两个属性.对于我这样,Hibernate接触不深和语文水平够烂的种种因素,发现 ...
- hibetnate 的inverse属性的作用
Hibernate的inverse属性的作用? 1.明确inverse和cascade的作用 inverse 决定是否把对对象中集合的改动反映到数据库中,所以inverse只对集合起作用,也就是只对 ...
- html的区域大小,JavaScript位置与大小(1)之正确理解和运用与尺寸大小相关的DOM属性...
在web开发中,不可避免遇到要计算元素大小以及位置的问题,解决这类问题的方法是利用DOM提供的一些API结合兼容性处理来,所有内容大概分3篇左右的文章的来说明.本文作为第一篇,介绍DOM提供的与尺寸大 ...
- hibernate inverse属性的作用
hibernate配置文件中有这么一个属性inverse,它是用来指定关联的控制方的. inverse属性默认是false,若为false,则关联由自己控制,若为true,则关联 由对方控制. 见例子 ...
- Hibernate【inverse和cascade属性】知识要点
Inverse属性 Inverse属性:表示控制权是否转移.. true:控制权已转移[当前一方没有控制权] false:控制权没有转移[当前一方有控制权] Inverse属性,是在维护关联关系的时候 ...
- 在 Hibernate 中inverse的属性
hibernate配置文件中有这么一个属性inverse,它是用来指定关联的控制方的. inverse属性默认是false,若为false,则关联由自己控制,若为true,则关联 由对方控制. 见例子 ...
- Hibernate中的inverse属性和cascade属性
假设Customer和Orders 建立一对多的双向关联. inverse 属性: //加载持久化对象 Customer customer = (Customer) session.load(Cust ...
- 【Hibernate】的Inverse属性
Inverse属性,是在维护关联关系的时候起作用的. 表示控制权是否转移.(在一的一方起作用) Inverse , 控制反转.默认为false不反转 Inverse = false 不反转: 当 ...
- Hibernate Inverse属性
inverse属性: 在one方的一对多关联中设置inverse属性为true,则表示由多方来维护关联关系,这有助于性能的改善: 不设置该属性的话双方都会维护关联关系 eg: <set name ...
最新文章
- -bash:syntax error near unexpected token '('
- 处理点云数据 点云与生成前视图
- Lazy WriterCheckPoint
- 外部网络如何获取网口打印机的ip地址_Win7如何连接网络打印机?详细的新手DIY教程...
- javascript判断日期奇偶_js中判断奇数或偶数
- std::nothrow
- WSL2开启sshd
- fluentmigrator连接mysql_如何利用FluentMigrator实现数据库迁移
- mysql安装包下载与检核
- 健康管理师可以从事哪些工作
- linux怎么显示第三个数据,从零开始的linux 第三章
- 【OCM第18期开班】第18期11g OCM培训将于8月23日,晚20点在腾讯课堂开班,第1场考试免费培训!!!...
- 2023必火的5种服装店装修风格,看看哪种风格适合你家店?
- java计算机毕业设计学校意见征集系统源码+系统+mysql数据库+lw文档
- 激活函数σ、tanh、relu、Leakyrelu、LR_BP反向传播推导
- antd mobile toast 数字不会换行
- 【类和对象】深入浅出类和对象
- php artisan实现机制,源码解读:php artisan serve
- Leetcode.1223 掷骰子模拟
- python3.7安装scrapy_Python3.7下scrapy框架的安装
热门文章
- QT实现带有阴影的渲染3D场景
- 经典C语言程序100例之三六
- centos6查看java命令_centos6.5下常见命令和操作
- 有什么办法可以判断页面是静态还是动态?_网络营销——网络营销专员到底是教你如何选择网站页面制作...
- 73.JVM内存基础结构,参数分类,推荐的配置项,参数混用问题,常用工具,常用命令
- 史上最简单的SpringCloud教程 | 第四篇:断路器(Hystrix)
- 2 TileMapObject的使用
- SpringBoot demo初始
- 操作多个表_6_生成笛卡尔积
- Hbase复制(Replication )