`
xiaoxin5230
  • 浏览: 89226 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

学习hibernate关联笔记

阅读更多
对于hibernate的映射关系一直是我心头上的一块病,所以,决定这次把它攻克下来
1.关于映射关系是双向关联还是单向关联,这个完全是根据需求来定制得,没有统一得标准
  room和userInfo 一对多 再room.hbm.xml中配置
    <set name="users" cascade="all">

               <!-- 映射User表的外键roomid -->

               <key column="roomid"></key>

               <!-- 一对多映射class UserInfo -->

               <one-to-many class="UserInfo"></one-to-many>

          </set>


userInfo 表中配置
   
<!-- 映射roomid属性作为UserInfo实体与Room实体的关联,其字段在userinfo表中 -->
<property name="roomid" column="roomid" type="java.lang.Long"/> 


假如添加room对象的时候,同时也保存userInfo,假如数据库没有关联关系正常,userInfo的roomid会变成0,所以数据库有关联得话会报错,所以要将userInfo.hbm.xml中配置
<property name="roomid" column="roomid" type="java.lang.Long" insert="false" update="false"/> 


此时假如再userInfo用到room对象就只能双向关联了,hibernate推荐是双向关联
此时就需要将
<property name="roomid" column="roomid"/>
改成
<many-to-one name="room" column="roomid" class="Room" />

假如同样是添加room对象的时候,同时也保存userInfo,此时会执行三条sql语句,第一条,保存room,第二条保存userInfo,让后再更新userInfo得roomId,这样效率就比较低,此时inverse粉墨登场了,可以通过inverse得属性设置将控制权交给userInfo此时需要修改得配置room.hbm.xml
<!-- 通过Room实体的users集合属性映射,级联动作为全部 -->

<!-- 将inverse属性设置为true,表示维护动作由UserInfo实体来完成 -->

     <set name="users" cascade="all" inverse="true">

          <!-- 映射User表的外键roomid -->

          <key column="roomid"></key>

          <!-- 一对多映射class UserInfo -->

          <one-to-many class="UserInfo"></one-to-many>

     </set>


让后再操作的时候
//保证UserInfo实体得到与Room实体的关系,以帮助由UserInfo来维护外键关联
userInfo.setRoom(room);

现在的查询语句变成了两条,第一条是插入room,第二条是插入Userinfo,单向关联不管什么时候都是执行三条sql语句,所以我们推荐使用双向关联,插入数据时inverse一般交给多得那方来配置


分享到:
评论
1 楼 shelaine 2009-03-04  
不错啊!
记得我学习这个的时候级联把所有相关的都级联到一起了
然后删除都一起删除...

相关推荐

    Hibernate学习笔记特别详细

    《Hibernate学习笔记特别详细》 Hibernate,作为一款开源的Object-Relational Mapping(ORM)框架,为Java开发者提供了强大的数据库操作支持。它简化了数据库访问的复杂性,使得开发人员可以像操作对象一样操作...

    Hibernate精华笔记全纪录

    ### Hibernate精华笔记全纪录 #### 一、知识准备与背景介绍 **1. JDBC基础** 在深入了解Hibernate之前,首先需要掌握Java Database Connectivity (JDBC)的基础知识。JDBC是Java中用于连接各种类型数据库的标准API...

    Java相关课程系列笔记之十四Hibernate学习笔记

    【Java相关课程系列笔记之十四Hibernate学习笔记】 Hibernate是一个开源的对象关系映射(ORM)框架,它极大地简化了Java应用程序对数据库的操作。本笔记将详细阐述Hibernate的核心概念、使用方法和特性。 一、...

    Hibernate学习笔记与总结

    **Hibernate学习笔记与总结** Hibernate 是一款开源的对象关系映射(ORM)框架,它为Java开发者提供了一种在关系数据库上操作对象数据的便捷方式。本文将深入探讨Hibernate的核心概念、配置、实体类、映射文件、...

    hibernate学习笔记mashibing

    《Hibernate学习笔记——马士兵教程解析》 在Java开发领域,ORM(Object-Relational Mapping)框架的使用已经非常普遍,其中Hibernate作为一款优秀的ORM框架,因其强大的功能和易用性深受开发者喜爱。本文将根据马...

    马士兵hibernate学习笔记(原版)

    《马士兵Hibernate学习笔记》是一份深入浅出的教程,旨在帮助初学者掌握Hibernate这一流行的Java持久化框架。Hibernate是一个对象关系映射(ORM)工具,它允许开发者用面向对象的方式来操作数据库,从而减少了传统...

    hibernate学习笔记第二天的源码

    在深入探讨Hibernate学习笔记第二天的源码之前,我们先来理解一下Hibernate的核心概念。Hibernate是一个开源的对象关系映射(ORM)框架,它允许Java开发者将数据库操作转化为对象模型,大大简化了数据访问层的开发...

    hibernate API帮助文档 及hibernate学习笔记

    这篇文档和学习笔记将深入介绍Hibernate的核心概念、API用法以及最佳实践。 1. **Hibernate核心概念** - **对象关系映射(ORM)**: Hibernate是ORM的一种实现,它允许开发者使用面向对象的方式来操作数据库,而...

    hibernate个人学习笔记完整版

    【hibernate个人学习笔记完整版】是一份详尽的资料,涵盖了Hibernate框架的基础到高级应用,旨在帮助学习者深入理解和掌握这一强大的Java对象关系映射(ORM)工具。Hibernate作为Java开发中的主流ORM框架,它极大地...

    hibernate学习笔记文档

    ### Hibernate 学习笔记知识点概览 #### 一、Hibernate 概述 - **定义**:Hibernate 是一款开源的对象关系映射(ORM)框架,它实现了将 Java 应用程序中的对象模型映射到关系型数据库中的记录。通过 ORM 技术,...

    hibernate学习笔记,记录我学习Hibernate的过程

    在学习Hibernate的过程中,我们首先要理解它的核心概念和功能。 1. **对象/关系映射(O/R Mapping)**:Hibernate的核心就是解决O/R映射的问题,允许我们在Java对象和数据库表之间建立映射关系,使开发者可以使用...

    达内HIBERNATE学习笔记

    根据提供的信息,我们可以总结出以下关于达内HIBERNATE学习笔记的重要知识点: ### 第一章:Hibernate入门 #### 1.1 学习目标 - 理解Hibernate的基本概念。 - 掌握如何使用Hibernate进行开发。 #### 1.2 对象持久...

    Hibernate学习笔记(培训学习时的笔记)

    【Hibernate学习笔记】 Hibernate是一个强大的Java对象关系映射(ORM)框架,它简化了数据库与Java应用程序之间的交互。本笔记将深入探讨Hibernate的核心概念、配置、实体管理、查询语言以及事务处理等方面,帮助...

    hibernate学习笔记_北大青鸟课堂笔记全文

    【hibernate学习笔记_北大青鸟课堂笔记全文】 Hibernate是一个强大的对象关系映射(ORM)框架,它为Java开发者提供了便捷的数据持久化方案。在Java应用中,尤其是在企业级开发中,它扮演着至关重要的角色,使得我们...

    hibernate第一天笔记

    本文将基于第一天学习Hibernate的笔记,详细解析其基本操作与实现。 首先,引入Hibernate所需的库文件至关重要。这包括Hibernate的核心库以及相应的数据库驱动JAR包。这些库文件提供了对ORM操作的支持,使得Java...

    hibernate学习笔记,学习大纲【吐血推荐】

    **Hibernate学习笔记与大纲** Hibernate 是一款开源的Java语言下的对象关系映射(ORM)框架,它极大地简化了数据库操作,使得开发人员可以使用面向对象的方式处理数据,而无需过多关注底层的SQL语句。本笔记将深入...

    hibernate学习笔记.

    【hibernate学习笔记】 在Java开发中,Hibernate是一个强大的对象关系映射(ORM)框架,它极大地简化了数据库操作。以下是对Hibernate的学习要点的详细解释: 1. **建立第一个Hibernate版本的HelloWorld** - **...

    Hibernate学习笔记!

    **Hibernate学习笔记** Hibernate是一个强大的Java对象关系映射(ORM)框架,它为开发者提供了在Java应用程序中操作数据库的强大工具。本笔记将深入探讨Hibernate的核心概念、配置、实体管理、查询语言以及最佳实践...

Global site tag (gtag.js) - Google Analytics