`
penghao122
  • 浏览: 362571 次
  • 性别: Icon_minigender_1
  • 来自: 广东珠海
社区版块
存档分类
最新评论

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

阅读更多
hibernate 关联映射学习包括 一对一,一对多,多对多 请查看相应的附件

Person  -> Idcard

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

主键关系:即让两个对象的id保持相同,这样可以避免多余的字段被创建

!!注意:<one-to-one>标签指示Hibernate如何加载其引用对象,
  缺省情况下根据主键加载引用对象

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

需要在idcard中加入<one-to-one>指向person,告知hibernate如何加载person,
缺省情况下根据主键加载


Hibernate一对一唯一外键关联映射(单向关联)

实际上是many-to-one的特例
可以采用many-to-one的标签指定“多”一端的unique="true",即限制“多”
一端的多重性为“一”,通过这种手段来实现一对一关联

这种方法会添加一个外键,指向另外一端的主键(IdCard)



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

双向关联需要在另外一端(IdCard)端添加<one-to-one>标签,
指示hibernate如何加载其引用对象,默认情况下会根据主键匹配进行加载Person
因为外键关联映射中,两个实体的关系是由person的外键idcard维护的,所以不能指定
使用persion的主键对person进行加载,而要根据Person的外键idcard进行加载,如:
<one-to-one name="person" property-ref="idCard" />

Hibernate一对多单向关联映射

这种映射的本质是利用了多对一的关联映射的原理

多对一关联映射:是在多的一端添加一个外键维护多指向一的关联引用
一对多关联映射:是在多的一端添加一个外键维护一指向多的关联引用

也就是说,一对多和多对一的映射策略是一致的,只是站的角度不同

缺点:
  * 更新student表中的classesid字段时,需要对每一个student发出一个update的sql,
    来更新classesid字段
  * 如果将t_student表中的classesis设置为非空,则不能保存student数据,因为关系是由
    classes维护的,在保存student时,还没有对应的classesid被生成



Hibernate 一对多双向关联映射

一对多双向关联映射的方法:

在一一端:
在集合标签里面使用<key>标签来表明需要在对方的表中添加一个外键指向一一端。

在多一端:
使用<many-to-one>标签来映射。

需要注意:<key>标签所指定的外键字段名需要与<many-to-one>标签定义的外键字段名一致,否则便会造成引用数据的
丢失!

--------------------------------------------------------------------------------------
如果从一端来维护一对多双向关联的关系,hibernate会发出多余的update语句,所以
一般地情况下,我们便会从多一端来维护其关联关系!
----------------------------------------------------

关于inverse属性:
inverse属性可以被设置到集合标签<set>上,表示在存储双向一对多关联映射的时候,
存储的是那一方的关联引用。默认情况下,inverse=“false”,所以,我们可以从一一端
或者多一端来维护两者之间的关系;如果我们设置inverse=“true”,则只能通过多一端来
维护两者之间的关系。inverse属性可以被用在一对多和多对多双向关联中;

注意:inverse属性只是在将数据持久化到数据库的过程中发挥作用.

Hibernate多对一关联

关联映射的本质
* 是将关联关系映射到数据库中,关联关系在对象模型中体现为内存中的一个或多个引用

<many-to-one>标签会在“多”的一端添加一个外键,指向“一”的一端,这个外键是由<many-to-one>
标签中的column属性定义的,如果忽略column属性,默认创建的外键与属性名相同

<many-to-one>标签的定义实例:
<many-to-one name="group" column="relatedGroup"/>
可以指定class属性,如果不指定Hibernate会自动找其关联类

理解级联的含义



多对多单向关联

需要注意映射规则:
<set name="users" table="t_user_role">
<key column="roleid"/>
<many-to-many class="com.bjsxt.hibernate.User" column="userid"/>
</set>

多对多双向关联

注意映射规则:
<set name="roles" table="t_user_role">
<key column="userid"/>
<many-to-many class="com.bjsxt.hibernate.Role" column="roleid"/>
</set>

table属性必须和单向关联中table的 名称相同;
<key>中的column属性值必须等于单向关联中<many-to-many>标签指向的column的属性值
<many-to-many>中column属性值必须等于单向关联中<key>中column的属性值

分享到:
评论
7 楼 zhangjiajun1988 2010-01-11  
不管是哪里的。。能奉献出来不错了。。顶楼主
6 楼 wjzliu0064 2009-01-05  
5 楼 anthon_lx 2008-08-30  
现在尚学堂的资料是满天飞了吧!
4 楼 penghao122 2008-08-29  
全是尚学堂的视频教程。不敢独想

所以。。搞出来啦。。

相互学习。。没有对和错
3 楼 keenvi 2008-08-22  
不管是不是照搬来的,拿出来分享就该非常感谢了
引用
评论
zhangxu261 2008-07-30
楼主!这个好像是尚学堂hibernate里面的readme啊,你照搬过来了?

zhangxu261 不应该有啥别的意思.
2 楼 zhangxu261 2008-07-30  
楼主!这个好像是尚学堂hibernate里面的readme啊,你照搬过来了?
1 楼 tianma168 2008-07-21  
你是女的??????  汗  当今世上还有这么专业的女人(而且还是程序员)。

相关推荐

    hibernate-release-5.2.10

    7. **关联映射**:包括一对一(@OneToOne)、一对多(@OneToMany)、多对一(@ManyToOne)、多对多(@ManyToMany)关系的映射,方便处理对象间的关联关系。 8. **延迟加载**:Hibernate的懒加载策略可以在需要时才...

    hibernate many-to-many级联保存,级联更新,级联删除

    在Java的持久化框架Hibernate中,Many-to-Many关系是一种常见的数据库表之间的关联方式,它表示一个实体可以与多个其他实体进行关联,反之亦然。本文将深入探讨如何在Hibernate中处理Many-to-Many关系的级联保存、...

    Hibernate一对一唯一外键关联映射(单向关联)

    在Java的持久化框架Hibernate中,一对一(One-to-One)关联映射是常见的关系数据库模型在对象模型中的体现。这种关联通常用于表示两个实体之间非常特殊的联系,比如一个人只有一个身份证,或者一个公司只有一个总部...

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

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

    hibernate-release-5.0.7.Final.zip

    讲师深入讲解了如何使用5.0.7.Final版本进行实际项目开发,包括实体类设计、配置文件设置、CRUD操作、关联映射、查询优化等关键知识点,旨在帮助学员快速掌握Hibernate的精髓。 5. 学习资源 包含的"0.txt"可能是一...

    最新 hibernate-release-4.2.13.Final.tgz

    这些示例涵盖了从基本的实体定义、配置,到复杂的查询、关联映射,通过实际操作,你可以深入理解Hibernate的工作原理和使用方法。 1. 实体管理:了解如何定义实体类,以及如何使用注解进行元数据配置。 2. 数据库...

    hibernate的关联映射

    【hibernate关联映射详解】 Hibernate 是一款流行的Java持久层框架,用于简化数据库操作。在Hibernate中,关联映射是实现对象关系映射(ORM)的关键,它允许我们在对象模型和关系数据库之间建立联系。关联映射主要...

    hibernate-common-annotations.jar

    Hibernate作为JPA的实现之一,提供了对JPA规范的全面支持。在Hibernate中,使用注解(Annotations)来标注Java类和字段,从而实现对象和数据库表的映射。"hibernate-common-annotations.jar"正是提供这些注解的关键...

    hibernate-distribution-3.3.2.GA-dist

    7. **关联映射**:支持一对一、一对多、多对一和多对多等各种关联关系的映射,使得对象间的关联关系能够自然地反映到数据库中。 8. **延迟加载**:Hibernate的懒加载策略能有效减少数据库交互,只有在真正需要时才...

    hibernate-annotations-3.4.0.GA

    3. 关联映射:通过@ManyToOne、@OneToMany等注解定义实体之间的关联关系,实现对象的懒加载或立即加载。 4. 事务管理:使用Hibernate的Transaction API进行事务控制,保证数据的一致性和完整性。 5. 性能调优:根据...

    Hibernate关联关系映射目录

    ### Hibernate关联关系映射 #### 一、单向关联 单向关联指的是对象之间的关联关系只在一个方向上存在,也就是说这种关联关系仅在一个类中表示出来,在另一个类中不体现这种关联。 ##### 1. 一对一外键单向关联 ...

    hibernate-release-5.3.2.Final

    2. JPA 2.2支持:该版本全面支持Java Persistence API 2.2规范,引入了新特性如JSON-B支持,增强了实体间关联的灵活性。 3. 新的查询语言:HQL(Hibernate Query Language)和JPQL(Java Persistence Query Language...

    Hibernate one-to-many / many-to-one关系映射

    在Java的持久化框架Hibernate中,关系映射是数据库对象之间的关联方式,它允许我们将复杂的数据库结构映射到Java对象上。"Hibernate one-to-many / many-to-one关系映射"是两个基本的关系类型,用于表示实体间的关联...

    hibernate配置文件详解

    --指定 Hibernate 映射文件路径 --&gt; &lt;mapping resource="com/Hibernate/test_products.hbm.xml" /&gt; &lt;/session-factory&gt; &lt;/hibernate-configuration&gt; ``` 在该文件中,我们可以看到有多个关键的配置项: * `...

    hibernate-release-5.0.7.Final.zip官方

    -- 其他配置 --&gt; &lt;/session-factory&gt; &lt;/hibernate-configuration&gt; ``` - **实体类映射**:编写实体类并定义相应的 hbm.xml 映射文件或使用注解方式实现。 #### 三、新特性与改进 1. **性能优化**:针对查询...

    hibernate关联映射详解

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

    hibernate-orm-master.zip

    Hibernate支持多种关联映射,包括一对一(@OneToOne)、一对多(@OneToMany)、多对一(@ManyToOne)和多对多(@ManyToMany)。这些关联可以通过定义外键或使用中间表来实现,使得对象间的复杂关系得以轻松处理。 ...

Global site tag (gtag.js) - Google Analytics