`

hibernate 之inverse重点复习

阅读更多

    inverse的原因,在于单向的一对多的低效而造成的.举个例子,比如
user表和books表,一个用户假定可以有很多书,行成一对多的关系.

 

1) 如果是单向的一对多,比如
   在user.hbm.xml中
    有<set name="books" table="books" ....>
               <key column="user_id"> </key>
         <one-to-many class="books"/>
  而在book的新增的行为中
     Book book=new Book();

              //更改book

          user.getBookss().add(book);

        session.save(user);

    

这个时候,由于是单向关联,所以被关联的book在新增时不知道要与哪个user对象关联,SQL语句其实为:
   insert into book  (....)  values (?,..........)
   然后再update book set userid='1',.......................

 这样如果book表的userid关联自段为not null的话就会出错.

    当然,如果把userid从book.hbm.xml中去掉的话,则hibernate 会产生两条语句
    insert into book (xxxxx) values (xxx....)

           //插入后假设id=7
            update book set userid=1 where id=7

     这样很低效率了.

 

2 因此.在一的一方user.hbm.xml中,设置控制反转,inverse=true,表示有多的一方进行控制

,这样就可以主动获得关联的user对象了.

  这时,book端的代码为

Book book=new Book();

              //更改book的属性等.

book.setUser(user);

user.getBooks().add(book);

session.save(user);

 

 

  
   

分享到:
评论

相关推荐

    彻底明白Hibernate中的Inverse

    在Hibernate中,`Inverse`是一个重要的概念,它涉及到实体之间的关联管理。本文将深入探讨`Inverse`属性,以及它在Hibernate中的作用和应用场景。 一、Hibernate与对象关系映射 Hibernate通过ORM机制将Java对象与...

    JavaEE学习笔记之Hibernate表关系之一对多(inverse详解)

    本文将深入探讨Hibernate中的一对多关系,并重点解析`inverse`属性的作用及其应用。 一对多关系是数据库设计中常见的关联类型,例如一个用户可以拥有多个订单,一个班级可以包含多个学生等。在Hibernate中,通过...

    Hibernate中Inverse和Cascade的区别.html

    Hibernate中Inverse和Cascade的区别.html

    hibernate inverse 个人总结.doc

    在探讨Hibernate的`inverse`属性之前,我们先要理解Hibernate中的对象关系映射(ORM)以及持久化机制。Hibernate是一个流行的Java ORM框架,它允许开发者将数据库操作转换为面向对象的编程模型,使得数据操作更加...

    hibernate inverse和cascade的详细讲解

    在这些配置选项中,`inverse`和`cascade`是最具挑战性的两个概念之一。它们主要用于控制对象之间关联关系的维护以及操作的级联行为。本文将详细介绍这两个属性的概念、作用以及应用场景,并通过示例来帮助读者更好地...

    Hibernate中cascade与inverse属性详解

    Hibernate中cascade与inverse属性详解

    hibernate集合映射inverse和cascade详解.txt

    在深入探讨Hibernate集合映射中的`inverse`与`cascade`属性之前,我们首先需要理解Hibernate框架的基本概念。Hibernate是一个开放源代码的对象关系映射(ORM)框架,它为Java应用程序提供了一种将对象模型与数据库...

    hibernate 级联(cascade和inverse)一对多

    在Java的持久化框架Hibernate中,级联操作(Cascade)和反转(Inverse)是两个重要的概念,它们主要用于管理对象关系模型中的关联关系。在一对多的关系中,这些特性可以帮助简化数据操作,提高代码的可读性和维护性...

    Hibernate中cascade和inverse应用

    在 Hibernate 框架中,`cascade` 和 `inverse` 是两个重要的概念,它们主要用于管理对象之间的持久化关系,特别是涉及到一对一(one-to-one)、一对多(one-to-many)和多对多(many-to-many)关系时。这两个属性都...

    Hibernate中cascade与inverse属性详解.doc

    在Hibernate中,`cascade`和`inverse`是两个非常重要的属性,它们主要涉及到对象关系映射(ORM)中的数据同步和关联管理。首先,我们来分别解析这两个属性的含义和作用。 `cascade`属性用于控制当操作一个实体(如...

    Hibernate_级联关系说明_-_关于cascade和inverse的用法

    在探讨Hibernate框架中的级联操作(cascade)与控制权反转(inverse)之前,我们需要先对Hibernate有一个基本的理解。Hibernate是一个开放源代码的对象关系映射(ORM)框架,它为Java应用提供了一种将对象模型映射到...

    inverse=true的总结

    在IT行业中,尤其是在Java开发或者使用ORM框架(如Hibernate)时,“inverse=true”是一个非常重要的概念,它涉及到对象关系映射中的数据管理策略。本文将深入解析“inverse=true”的含义,以及它在实际应用中的作用...

    Hibernate 简单 PPT 总结

    在Hibernate中,`inverse`属性是一个关键的概念,它用于定义一对多或多对一关系中的维护端。`inverse="true"`表示另一端负责维护关联关系,这在处理关联实体的保存和更新时具有重要意义。例如,如果你有一个学生类和...

    Hibernate复习题1含答案要点.doc

    - **Criteria查询**是Hibernate提供的另一种查询方式,除了传统的HQL(Hibernate Query Language),Criteria API允许以面向对象的方式构建查询,更符合Java的编程习惯。创建Criteria对象的正确方式是`Criteria c = ...

    inverse 例子

    在Hibernate这个强大的对象关系映射(ORM)框架中,`inverse`属性是一个非常重要的概念,它主要用于管理关联关系的维护责任。在这个例子中,我们将会深入理解`inverse`属性的作用,并通过一个简单的测试案例——`...

    Hibernate学习笔记和资料

    hibernate中一对一,一对多,多对多关系的配置,延迟加载,cascade,inverse hibernate查询方式概述,HQL查询,QBC查询,分页,结果集封装方式 ,高级查询 查询的优化,一级缓存,二级缓存,批量查询,注解方式

    hibernate常用注解

    ### Hibernate常用注解详解 #### 一、JPA与Hibernate注解基础 JPA(Java Persistence API)是一种标准规范,用于实现对象关系映射(ORM),允许开发人员使用注解或XML来描述实体对象与数据库表之间的映射关系。...

    hibernate配置要点详谈

    ### Hibernate配置要点详谈 #### 一、配置文件与配置方式 在Hibernate中,有两种主要的配置文件形式:`hibernate.cfg.xml` 和 `hibernate.properties`。 1. **`hibernate.cfg.xml`**: - 这种配置文件通常包含...

Global site tag (gtag.js) - Google Analytics