iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >正确理解hibernate的inverse! many-to-many(转)
  • 878
分享到

正确理解hibernate的inverse! many-to-many(转)

2023-06-03 06:06:35 878人浏览 泡泡鱼
摘要

Inverse是hibernate双向关系中的基本概念,当然对于多数实体,我们并不需要双向关联,更多的可能会选择单向关联,况且我们大多数人一般采用一对多关系,而一对多双向关联的另一端:多对一的inverse属性是不存在,其实它默认就是inv

Inverse是hibernate双向关系中的基本概念,当然对于多数实体,我们并不需要双向关联,更多的可能会选择单向关联,况且我们大多数人一般采用一对多关系,而一对多双向关联的另一端:多对一的inverse属性是不存在,其实它默认就是inverse=false.从而防止了在一对多端胡乱设置inverse也不至于出错。但是inverse设置不当确实会带来很大的性能影响,这点是我们必须关注的。

这篇文章已经详细分析了inverse设置不当带来的影响:

Http://www.hibernate.org/155.html

看了这篇文章,还是很有必要再写下一些总结的:

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建立多对多关系也是将他们分离成两个一对多关系,中间连接一个连接表。所以通用存在一对多的关系,也可以这样说:一对多是多对多的基本组成部分。

--结束END--

本文标题: 正确理解hibernate的inverse! many-to-many(转)

本文链接: https://www.lsjlt.com/news/233220.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 正确理解hibernate的inverse! many-to-many(转)
    Inverse是hibernate双向关系中的基本概念,当然对于多数实体,我们并不需要双向关联,更多的可能会选择单向关联,况且我们大多数人一般采用一对多关系,而一对多双向关联的另一端:多对一的inverse属性是不存在,其实它默认就是inv...
    99+
    2023-06-03
  • html的正确理解是什么
    HTML,即超文本标记语言,是一种标记语言,它用于编写web文档并实现网页的结构和内容。HTML是web开发中的重要组成部分,它的正确理解有助于开发者更好地掌握web技术。HTML的原始目的是为了向用户展示文本(包括图像和链接等内容),并且...
    99+
    2023-05-14
  • 详解Redis单线程的正确理解
    很多同学对Redis的单线程和I/O多路复用技术并不是很了解,所以我用简单易懂的语言让大家了解下Redis单线程和I/O多路复用技术的原理,对学好和运用好Redis打下基础。 一、R...
    99+
    2024-04-02
  • 已解决java.sql.SQLNonTransientConnectionException:Could not create connection to database server异常的正确解决
    已解决java.sql.SQLNonTransientConnectionException:Could not create connection to database server异常的正确解决...
    99+
    2023-10-27
    数据库 java sql
  • 关于Redis单线程的正确理解
    很多同学对Redis的单线程和I/O多路复用技术并不是很了解,所以我用简单易懂的语言让大家了解下Redis单线程和I/O多路复用技术的原理,对学好和运用好Redis打下基础。 一、R...
    99+
    2024-04-02
  • 如何正确的理解Java中的继承
    本篇文章为大家展示了如何正确的理解Java中的继承,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Java作为一面向对象的语言,具备面向对象的三大特征——继承,多态,封装。继承顾名思义,继任,承接,传...
    99+
    2023-05-31
    java ava
  • 如何理解Python程序转为EXE文件的正确实现方法
    这篇文章给大家介绍如何理解Python程序转为EXE文件的正确实现方法,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。在Python编程语言中,开发出的程序可以转换成EXE文件来实现一些特定的操作。在这里我们将会为大家详...
    99+
    2023-06-17
  • 正确的理解和使用Django信号(Signals)
    目录Django信号的一个简单例子利用Django信号实现不同模型的联动更新Django常用内置信号如何正确放置Django信号的监听函数代码 小结Django 提供一个了“信号分发...
    99+
    2024-04-02
  • Go中如何正确处理带有转义的字符串?
    问题内容 我正在创建一个程序,该程序正在处理和计算开源存储库和库的大小,并将数据保存到数据库中以供进一步分析。 我有一个输入字符串:github.com/azure/go-ansit...
    99+
    2024-02-05
  • Java 关键字 volatile 的理解与正确使用
    概述Java语言中关键字 volatile 被称作轻量级的 synchronized,与synchronized相比,volatile编码相对简单且运行的时的开销较少,但能够正确合理的应用好 volatile 并不是那么的容易,因为它比使用...
    99+
    2023-05-31
    java volatile ava
  • 如何正确理解PHP中的值传递方式
    如何正确理解PHP中的值传递方式 PHP是一种广泛应用于Web开发的脚本语言,而在PHP中的参数传递方式主要有值传递和引用传递两种。而理解PHP中的值传递方式对于编写高效的代码至关重要...
    99+
    2024-03-08
    php 理解 值传递
  • 已解决java.lang.ClassCastException: java.math.BigInteger cannot be cast to java.lang.Long异常的正确解决方法,亲测有效
    已解决java.lang.ClassCastException: java.math.BigInteger cannot be cast to java.lang.Long异常的正确解决方法,亲测有效...
    99+
    2023-09-12
    java intellij-idea mybatis
  • 已解决java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.util.Map异常的正确解决方法,亲测有效!!
    已解决java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.util.Map异常的正确解决方法,亲测有效!!! ...
    99+
    2023-12-23
    java jvm 开发语言
  • 解决vue项目路径不正确,自动跳转404的问题
    目录vue项目路径不正确,自动跳转404第一种方法第二种vue路由判断跳转404页面vue项目路径不正确,自动跳转404 第一种方法 使用vuerouter钩子函数beforeEac...
    99+
    2024-04-02
  • 正确理解C++的构造函数和析构函数
    目录一、构造函数二、C++类的内存模型2.1、只定义成员函数2.2、往空类中添加静态成员变量2.3、再加入非静态成员变量三、this指针四、析构函数一、构造函数 首先,由于类只是一个...
    99+
    2024-04-02
  • Apache2无法正确解析PHP文件的处理方法
    由于篇幅限制,以下是一个简短的文章: Apache2是一种常用的Web服务器软件,而PHP是一种广泛使用的服务器端脚本语言。在搭建网站过程中,有时会遇到Apache2无法正确解析PHP...
    99+
    2024-03-08
    php apache 解析 php解析
  • 如何理解PHP转义的真正含义
    如何理解PHP转义的真正含义,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。如何正确的理解PHP转义是一个初学者比较困扰的问题。我们今天为大家简要的讲述了PHP转...
    99+
    2023-06-17
  • 如何理解Adsense提升CPC的正确及错误做法
    本篇文章为大家展示了如何理解Adsense提升CPC的正确及错误做法,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。虽然CPC的好与坏并没有一个可以量化的绝对标准,但您还是可以通过一些正确的做法(并避...
    99+
    2023-06-12
  • 正确理解和判断PR劫持的方法是什么
    本篇文章为大家展示了正确理解和判断PR劫持的方法是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。PR劫持是什么? PR挟持就是用欺骗手段获得工具条上比较高的PR值显示。PR挟持的SEO作弊方法有...
    99+
    2023-06-12
  • 详解JS中异常与错误处理的正确方法
    目录简介1 面向错误编程1.1 墨菲定律1.2 先判否2. js 内置的错误处理2.1 Error 类2.2 throw2.3 try catch2.4 Promise.catch3...
    99+
    2023-05-16
    JS异常处理 JS错误处理 JS异常
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作