继续上一篇博客介绍的级联继续如下理解

inverse的值是boolean值,也就是能设置为true或false。 如果一方的映射文件中设置为true,说明在映射关系(一对多,多对多等)中让对方来维护关系。如果为false,就自己来维护关系。默认值是true。 并且这属性只能在一端设置。比如一对多,这个一端。也就是在有set集合的这方设置。

tb_factory.hbm.xml的文件如下:

<!--         inverse="true",让对方维护关系,此时这里的cascade设置没什么用,因为自身不维护关系,它也就失效了。 --><set name="books"  inverse="true" cascade="save-update" > <key column="factoryid"></key><one-to-many class="com.book.web3.Book" /></set>

tb_books.hbm.xml

<!--      这个级联就有用,因为是让自己这方维护关系 --><many-to-one name="factory" class="com.book.web3.Factory" cascade="all" >  <!--所有情况下均进行关联操作,即save-update和delete。 --><column name="factoryid"></column></many-to-one>

总结:

对于设置了cascade就可以维护双方关系,为什么还要设置inverse呢,这是由于

Inverse:负责控制关系,默认为false,也就是关系的两端都能控制,但这样会造成一些问题,更新的时候会因为两端都控制关系,于是重复更新。一般来说有一端要设为true

到这里,inverse和cascade这两个的作用就已经讲解完了

1、inverse的权限在cascade之上,意思就是cascade是否有用,还得看inverse这个属性

2、inverse的作用:在映射关系中,让其中一方去维护关系,好处就是能提高性能,不用重复维护。维护两种关系,看下

  2.1 控制级联关系是否有效

cascade是否有效,就得看inserve的值,如果是自己方来维护关系,那么cascade就有效,反之无效

  2.2 控制外键关系

    这个就得通过让自己拥有对方的实例引用(可能是set,也可能就是单个存储对象的变量),这样才具备控制外键关系的能力,然后看inserve的值,

3、inverse只能在一的一方设置,并且默认值是true,也就是说,不设置inverse时,默认是让多的一方去维护关系,这种一般是在双向、外键关系中才设置inverse的值,如果是单向的,就只有一方有维护关系的权利。

4、通过学习这两个属性,在测试代码中,就不必那么麻烦了,只需要考虑维护关系的一方,另一方就会自动保存了。

Hibernate inverse 详解相关推荐

  1. Hibernate配置详解

     一.简单介绍   Hibernate是一种对JDBC做了轻量级封装的对象---关系映射工具,所谓轻量级封装,是指Hibernate并没有完全封装JDBC,Java应用即可以通过Hibernate ...

  2. Java程序员从笨鸟到菜鸟之(五十一)细谈Hibernate(二)开发第一个hibernate基本详解...

    在上篇博客中,我们介绍了<hibernate基本概念和体系结构>,也对hibernate框架有了一个初步的了解,本文我将向大家简单介绍Hibernate的核心API调用库,并讲解一下它的基 ...

  3. Hibernate映射详解(二)--多对一,一对多单向,一对多双向关联映射

    在我们以前的数据库设计中,设计表就不是一件轻松的事情.多种事物之间往往都是有这样那样的关系的.那怎样设计表格,才能既将事情描述明白,又能使数据库设计的比较合理呢?那里我们提供了好多规范,好多约束来满足 ...

  4. Hibernate注解详解(超全面)

    注解虽然配置简单易懂,但是对于复杂点的数据结构,配置起来反而比xml难(例如用xml配置,因为有帮助文件dtd的支持,因此能很好的利用提示来帮助编程,而注解代码提示不会呈现出项目中所有相关的类,如果你 ...

  5. hibernate Expression详解

    Expression.gt:对应SQL条件中的"field > value ".如:Expression.gt("salary", new Integer ...

  6. myeclipse添加使用hibernate框架详解

    1,首先建一个web工程testhibernate,然后点击菜单上的"MyEclipse"选择如下: 2,接下来会让你选择hibernate.cfg.xml的存放位置这就不说了,接 ...

  7. 【大话Hibernate】hibernate缓存详解

    为什么要用hibernate缓存? hibernate是一个持久层框架,经常访问物理数据库.为了降低应用程序对物理数据源访问的次数,从而提高应用程序的运行性能,我们想到使用hibernate缓存机制. ...

  8. Hibernate 配置详解(5)

    9) hibernate.batch_fetch_style: 该配置是hibernate4.2.0新添加的,使用这个设置可以配置hibernate在做batch-fetch的时候,生成SQL的策略. ...

  9. hibernate缓存详解

    hibernate中提供了两级缓存,一级缓存是Session级别的缓存,它属于事务范围的缓存,该级缓存由hibernate管理,应用程序无需干预:二级缓存是SessionFactory级别的缓存,该级 ...

最新文章

  1. Python中函数的参数传递与可变长参数
  2. HDU 1245 Saving James Bond
  3. 开启Windows8里面的Hyper-V虚拟机功能
  4. android 获取连接WiFi的名称
  5. 代理的JavaOne 2016观察
  6. python if else 必须同时出现吗,Python:Inline if语句else什么也不做
  7. 图之DFS与BFS的复杂度分析
  8. 125KHz 100cm ID 读卡电路_摄影人最好用的读卡器推荐
  9. YOCTO项目介绍:通过提供模版、工具和方法帮助开发者创建基于linux内核的定制系统
  10. Java参数传递机制分析:值与引用
  11. 2-1 组合优化问题
  12. 干货分享|视频制作技巧-视频拍摄/视频剪辑
  13. 咏红梅花——曹雪芹_ywyuan_新浪博客
  14. python27安装get-pip
  15. 如何做好网站SEO优化,网站SEO关键词优化的5个技巧
  16. 关于扁平化界面风格的设计美学讨论
  17. WebDAV之葫芦儿•派盘+RS文件管理器
  18. Oracle 11g重建控制文件——控制文件全部丢失,从零开始
  19. 优信拍集团php面试题_【优信拍怎么样?】-看准网
  20. ncnn Mat矩阵类

热门文章

  1. capped collection
  2. OSChina 周一乱弹 ——新娘着火,拿红酒灭火的肯定是新郎前女友
  3. @Valid效验注解使用
  4. printk 续行问题
  5. matlab将单词China译成密码,把 China 译成密码
  6. Intel Xeon E5-2620 v4(至强E5-2620 v4)
  7. ROG 幻 16 2022 款怎么样
  8. java返回datatable_在Java中实现.net中DataTable功能以及操作双数据库的List连接问题解决方案探究...
  9. 在PowerPoint中将鼠标变成激光笔
  10. C语言--内存操作函数memmove