`

Hibernate单、双向关联与inverse属性

阅读更多
<set name="users" cascade="all" inverse="true">
<key column="roomid"></key>
<one-to-many class="UserInfo"/>

</set>

<many-to-one name="room" column="roomid" class="Room">
</many-to-one>


1对多,多对1双向关联,通过inversed=ture 来实现控制关系的反转,由从表来进行外键的维护

对比:
使用双向关联执行三句SQL的原因在于:插入room表后,需要插入根据一对多关联的userinfo表,但是插入userinfo表的前提是session.save(room);,也即通过Room实体来维护二者之间的关系。这也就意味着Room实体需要通过自身包含的UserInfo实体一一更新其外键,达到关联的目的。

而inverse属性就提供了另外一个更好的做法,它将关联关系反向交给UserInfo实体来完成,这也就意味着虽然通过session.save(room);来执行插入,但是却是由UserInfo实体来维护二者之间的关系。
这样的SQL语句在批量插入userinfo表时效率高了许多,是双向关联中效率最高的一种插表方式
结语

单向关联的功能比双向关联要弱,而且单向关联在操作数据库表时总是会执行三句SQL。因此在一般设计和实现中,通常应该优先选择使用双向关联。而使用双向关联时,inverse属性也是不能忽视的一个重点。通过多端来控制外键值的插入是值得推荐的。
分享到:
评论

相关推荐

    hibernate多对多双向关联

    多对多双向关联 &lt;br&gt;注意映射规则: &lt;set name="roles" table="t_user_role"&gt;&lt;br&gt; &lt;key column="userid"/&gt;&lt;br&gt; &lt;many-to-many class="com.bjsxt.hibernate.Role" column="roleid"/&gt; &lt;/set&gt;&lt;br&gt; table...

    彻底明白Hibernate中的Inverse

    `Inverse`属性主要用在双向关联中,用于指定哪个关联端负责管理关联关系的维护。默认情况下,双向关联的两端都是“负责端”,即两者都会在持久化操作时更新关联。但这样可能会导致数据冗余和一致性问题。 五、`...

    hibernate一对多关联映射(双向关联)

    在Hibernate的一对多关联中,双向关联意味着双方都可以通过导航属性访问对方。例如,用户类(User)可以有一个订单集合(Orders),而订单类(Order)同样有一个用户属性(User)。这样设计的好处在于,我们可以在任一侧轻松...

    hibernate双向一对多关联映射(XML)

    为了使双向关联正常工作,还需要在Java代码中进行相应的设置。例如,在创建新订单时,不仅要设置订单的用户属性,也要在用户对象的订单集合中添加该订单: ```java User user = new User(); Order order = new ...

    关联映射cascade,inverse讲解

    在一个双向关联中,如果一方设为inverse="true",意味着这一方不负责维护关联关系。以用户和订单为例,如果User对象设置为inverse,那么更新Order对象的User引用时,Hibernate不会更新数据库中的关联关系。相反,...

    JPA中的一对一双向关联

    理解JPA中一对一双向关联的实现,你可以查看Hibernate(一个流行的JPA实现)的源码,学习其内部如何处理关联的建立和维护。同时,使用诸如IntelliJ IDEA这样的集成开发环境(IDE),其内置的代码生成器可以帮助你...

    Hibernate双向一对多

    标题"Hibernate双向一对多"指的是Hibernate框架中的一个重要关系映射概念,即在一个实体类中,一个实例可以与多个另一个实体类的实例相关联,而在另一个实体类中,每个实例也可以关联到该实体类的一个实例。...

    hibernate关联映射的作用和常用属性解释

    ### Hibernate关联映射的作用与常用属性详解 #### 关联映射概述 在对象关系映射(Object Relational Mapping,简称ORM)技术中,Hibernate作为Java领域内非常成熟且功能强大的框架之一,它允许开发者将Java类映射...

    hibernate对映射xml的一对多的双向关联详解

    本篇文章将深入探讨 Hibernate 中的一对多双向关联映射。 在数据库设计中,一对多关联是指一个实体可以与多个其他实体相关联,比如一个学生可以有多个课程,一个部门可以有多名员工。在Hibernate中,这种关系可以...

    Hibernate_Annotation关联映射

    如果是双向关联,其中一段必须定义为Owner,另一端必须定义为inverse(在对关联表进行更新操作时这一端将被忽略) @Entity() public class Employer implements Serializable { private Integer id; private ...

    Hibernate一对多(多对一)双向关联(annotation/xml)

    总之,理解和熟练运用Hibernate的一对多、多对一以及双向关联,是提升Java企业级应用开发效率的关键。通过注解或XML配置,开发者可以灵活地定义实体间的关联,实现数据的持久化。同时,注意级联操作、懒加载策略等...

    Hibernate表间关联ppt课件.ppt

    除了单向关联,还可以建立双向关联,例如在学生类中添加对班级的引用。在映射文件中使用`&lt;many-to-one&gt;`标签定义。 6. 多对多关联(Many-to-Many): 如课程与教师之间的关系,通常需要通过一个中间表来实现。...

    Hibernate多对多双向关联(annotation/xml)

    本主题将深入探讨使用Hibernate进行多对多双向关联的实现,既可以通过注解(Annotation)方式,也可以通过XML配置文件来完成。 首先,我们来看多对多关联的基本概念。在数据库设计中,当两个实体之间存在多个实例...

    hibernate学习5之one-to-many双向关联.docx

    在Hibernate框架中,双向一对多关联映射是常见的对象关系映射(ORM)方式,用于在Java对象模型中表示数据库中的两个实体之间的多对一关系。在这个场景中,"一"端通常指的是一个实体可以拥有多个另一个实体的实例,而...

    hibernate一对多双向

    `inverse="true"`属性指明了该关系是由另一端维护的,这在双向关联中很重要,因为它决定了关系的维护方向,防止在两个实体间形成循环依赖。 ### 三、逆向关联的理解 在一对多双向关联中,通常会有一个实体负责维护...

    hibernate的关联映射

    - **双向关联**:在两个实体的映射文件中都需要`&lt;many-to-many&gt;`标签,并且需要一个共享的中间表。 关联映射的配置涉及到`cascade`属性,它决定了级联操作的行为,如`save-update`、`delete`等。`inverse`属性则...

    hibernate学习笔记

    在Hibernate中,`inverse`属性通常与双向关联的实体一起使用,它决定了哪一方实体在进行删除或更新关联时拥有控制权。例如,在一对多关系中,如果`inverse`属性被设置为`true`,那么这一方将不会主动触发对关联实体...

    Hibernate中的关联映射

    双向关联映射指的是双方都定义了关联,这样可以更好地反映现实世界中的关系,同时也便于数据的检索。 ###### 2.2.1 一对多 (1-N) - **无连接表**:一方使用集合形式访问多方,而另一方则包含一个引用到这一方的...

    Hibernate关联关系疑问

    7. **反向关联(Inverse)**:在双向关联中,一方称为拥有端(owning side),另一方称为无主端(inverse side)。无主端的关联不会影响数据库操作,所有操作都由拥有端控制。通过@JoinColumn的nullable属性和...

    Hibernate一对多关联双向关联代码实现分享

    本篇将详细讲解如何在Hibernate中实现一对多的双向关联,并提供相关的代码示例。 在关系型数据库中,一对多关联是指一个表的记录可以对应另一个表的多个记录。在Hibernate中,这种关系可以通过在实体类和映射文件中...

Global site tag (gtag.js) - Google Analytics