`
killer丿丶东
  • 浏览: 6791 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

HIbernate关联映射

阅读更多
Hibernate关联映射
表与表的 关联 关系
在软件开发中,类与类之间最普遍的关系就是关联关系,而且关联是有方向的。
一对一:必须有唯一的标识符
一对多:在多方添加外键指向一方的主键
多对多:创建第三张表,中间表至少有两个字段,分别作为外键指向多对多双方
主键.

建立一对多双向关联关系
当类与类之间建立了关联,就可以方便地从一个对象导航到另一个对象,或者
通过集合导航到一组对象。
配置一对多关联
1分别创建两个实体类
Hibernate要求在持久化类中定义集合类属性时,必须把属性声明为接口
类型,如java.util.Set可以指定泛型java.util.Set<表名>
多方实体类需要添加一方实体类的集合
2 分别创建实体类和表的映射关系
多方添加外键指向一方主键
由于多方表中没有直接与集合属性对应的字段,因此不能使用<property>
元素来映射集合属性,而要使用<set>元素
<set name="cout">
    <key column="uc"/>
    <one-to-many class="entity.Cour"/>
</set>
<set>元素的name属性:设定持久化类的属性名
<set>元素还包含两个子元素:
1.<key>元素:column属性设定与所关联的持久化类对象的表的外键,
2.<ont-to-many>元素:class属性设定与所关联的持久化类。
Hibernate根据以上映射代码获得一下信息:
1.<set>元素表名多方类的集合属性为java.util.Set集合类型
2.<one-to-many>子元素表名集合中存放的是一组集合对象
3.<key>子元素表明一方表通过外键参照多方表
3把映射 关系  添加到  核心配置文件即可
4添加一个用户 和添该用户的两个订单
双向关联联系下的增删改查(级联)
1.cascades属性
用于映射持久类之间关联关系的元素,<set>,<many-to-one>和<one-to-one>
都有一个cascade属性,用于指定如何操作与当前对象关联的其他对象

孤子删除操作cascade="delete-orphan"
当customer.hbm.xml的<set>元素的cascade属性取值为all-delete-orphan,
Hibernate会按照如下方式处理customer对象:
1.当保存或更新customer对象时,级联保存或更新所有关联的order对象,
  相当于save-update.
2.当删除customer对象时,级联删除所有的order对象,相当于delete。
3.删除不再和customer对象关联的所有order对象。
当关联双方存在父子关系时,就可以把父方的cascade属性设为 all-delete-orphan.


2.<set>元素的inverse属性
术语“inverse”直译为“反转”,在Hibernate中,inverse属性制定了关联关系中方向
通过inverse属性来设置由双向关联的哪一方来维护表和表之间的关系,inverse=false的为主动方,inverse=true的为被动方,由主动方负责维护关联关系。
在one一方设置inverse=true,由集合端管理关系。
配置inverse=”true”:在那一端配置.那么那一端放弃了外键的维护权.
一般情况下,一的一方去放弃.

建立多对多关联关系
必须创建一个中间表,并且中间表由两个多方表的主键组成
双向两端都使用集合属性
双向关联必须使用中间表
集合属性 应增加key子元素用以映射外键列,集合元素里应增加many-to-many子
元素关联实体类
在双向关联的两边都需指定连接表的表名及外键列的列名,两个集合元素的set的 table元素的值必须指定,而且必须相同
多对多关系的级联与一对多的相同
1、创建了学生和课程 的实体 类,及相关的映射文件
(多对多,必须 由一方 主动放弃外键的维护权,inverse="true")
2、把映射文件 添加到 核心配置文件 
3、测试添加两个学生,两个课程,学生选择相关课程
Hibernate的检索方式
Hibernate的检索方式.doc
Select * from user where uname=? group by sex having age>30  order  by  age desc
延迟加载
Hibernate查询多方对象时,立即查询并加载与之关联的一方对象,这种查询策略
称为立即加载,立即加载有两大不足:
1.select语句的数目太多,需要频繁地访问数据库,会影响查询性能
2.在应用程序只需要访问多方对象,而不需要访问一方对象的场合,加载一方
  对象完全是多于的操作,这些多于的一方对象浪费了很多空间。
为了解决以上问题,Hibernate提供了延迟加载策略,
用于设定加载策略的lazy属性
类级别 <class>元素中lazy属性的可选值为:true(延迟加载)和false(立即加载)
<class>元素中lazy属性的默认值为true
一对多关联级别 <set>元素中的lazy属性的可选值为:true(延迟加载)和false(立即加载)以及extra(增
强延迟加载);<set>元素中的lazy属性的默认值为true
多对一关联级别 <mant-to-one>元素中的lazy属性的可选值为:proxy(延迟加载)、no-proxy(无代理延
迟加载)和false(立即加载);<many-to-one>元素中的lazy属性的默认值为proxy
分享到:
评论

相关推荐

    hibernate关联映射详解

    hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,包含4个说明文档,分别详细解说了hibernate关联映射的...

    hibernate关联映射实例

    本文将深入探讨“hibernate关联映射实例”中的关键知识点,包括一对多、多对多和继承映射,这些都是Hibernate中至关重要的概念。 1. **一对多关联映射**: 在现实世界中,一个实体可能会与多个其他实体相关联,...

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

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

    Hibernate关联映射总结

    ### Hibernate关联映射总结 #### 一、基础知识 在探讨Hibernate中的关联映射之前,我们需要先理解几个基本概念,这将有助于我们更好地理解和应用这些关联映射。 - **主键**(Primary Key):主键是用来唯一标识一...

    Hibernate关联映射

    在 Hibernate 映射中,需要使用 `one-to-one` 元素,并设置 `constrained="true"`,表明该类的主键由关联类生成。 3. Hibernate 一对一连接表单向关联: 这种关联方式是通过额外的连接表来实现一对一关系的。连接...

    Hibernate关联映射.rar

    本教程“Hibernate关联映射.rar”聚焦于Hibernate中的关联映射,特别是多对一和一对多的关系映射,非常适合初学者了解和实践。 首先,我们要理解什么是关联映射。在数据库中,表与表之间存在各种关系,如一对一、一...

    hibernate 全面学习->hibernate 关联映射学习

    总的来说,这个压缩包提供了丰富的Hibernate关联映射的学习资源,涵盖了从基础到进阶的各种关联类型。通过学习这些示例,你将能够熟练掌握如何在Java项目中使用Hibernate进行数据持久化,并灵活地处理各种数据库关系...

    Hibernate 关联映射

    这可能是测试Hibernate关联映射的一个示例项目或者类。通常,这样的测试会包含各种关联映射的实例,如实体类的定义,配置文件或注解,以及测试用例,用于验证关联映射是否按预期工作。 **详细知识讲解:** 1. **一...

    hibernate 关联映射(一) many to one

    本文将深入探讨“Hibernate关联映射中的Many-to-One关系”。 Many-to-One关联是现实世界中常见的关系类型,比如一个学生可以对应多个课程,而一个课程可能被多个学生选修。在数据库中,这通常表现为一对多(One-to-...

    hibernate关联映射

    hibernate关联映射是Hibernate框架中的一个重要概念,它用于在Java对象模型和数据库表之间建立关系,使得数据操作更加方便。以下将详细介绍各种类型的关联映射: 1. **单向N-1关联(无连接表)** 在这种关联中,一...

    hibernate关联映射详解SSH 多对多,一对多关系对象映射

    在Java的持久化框架Hibernate中,关联映射是至关重要的概念,它允许我们将数据库中的表关系映射到对象之间的关系。SSH(Struts、Spring、Hibernate)是经典的Java Web开发框架,其中Hibernate负责数据访问层,提供了...

    Hibernate关联映射-one to one单向外键关联

    本话题主要探讨的是Hibernate中的一种关联映射方式——一对一(One-to-One)单向外键关联。这种关联模式通常用于两个实体之间存在唯一对应的关系,例如一个用户对应一个唯一的账户。 在Hibernate中,一对一关联可以...

    hibernate 关联映射(二) one to one(单向)

    本篇文章将深入探讨Hibernate中的关联映射,特别是One-to-One(一对一)关联,这是一种表示两个实体之间一对一关系的映射方式。我们将通过源码分析和实际例子来理解其工作原理。 ### 一、One-to-One关联概述 在...

    hibernate 关联映射(三) one to one(双向)

    在Java的持久化框架Hibernate中,关联映射是核心特性之一,它允许我们将数据库中的表关系映射到对象之间的关系。本篇将深入探讨一种特殊的关联映射方式——一对一(One to One)映射,特别是在双向关联的情况下的...

    Hibernate一对一主键关联映射(双向关联)

    在Java的持久化框架Hibernate中,一对一(One-to-One)关联映射是一种常见的关系数据库模型映射方式。这种关联通常发生在两个实体之间,且每个实体都只有一个对应的实例。本篇文章将详细探讨双向一对一主键关联映射...

Global site tag (gtag.js) - Google Analytics