`
hapuer
  • 浏览: 5562 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

HIbernate实体关系映射笔记

    博客分类:
  • Java
阅读更多
实体关联映射:

1、一对一映射:
   主要有两种方式来映射:
   一、基于外键的映射方式:
       首先有两张表,例如:TABEL user  AND card;card 表中参照一个user的主键id
       首先就是要保证这两个类中,必须要分别有各自的一个连接;也就是说在各个类中有另外一个类 

     的一个属性;比如说:
class User
{
   private Card card;//card的一个属性
}
class Card
{
   private User user;//user的一个属性
}
       这个时候配置就是在user的配置文件中;
       <one-to-one name="card" class="" cascade="save-update" property-ref="user"/>
           注意这里的property-ref属性:它是指在映射中,user找到card是通过user这样一个属性来 

      找到的,如果不这样设置,那么就会在关联中出现user的id和card的id相关联的情况;
       而在card的配置文件中;
       <many-to-one name="user" class="" column="userid" unique="true">
           注意这里column指如何找到user呢?是通过在表中的userid来找到的。而这里的unique指的 

        是限制为了一对一
    二、基于主键的约束
        这里仍然有两张表,这两张表分别是:user 和 card 而这个时候,在card表中,并没有userid 

      这一列,但是还是有一个参照userid的外键约束,这里的card中的id主要就是参照的是user中的id
        而上面基本上没有什么改变。只是在配置文件中;
        在user的配置文件中,
          <one-to-one name="card" class="" cascade="save-update"/>
         这里不需要配置property-ref属性
        在card中
         <one-to-one name="user" class="" constrainted="true"/>
         另外在主键中也要改;开始的时
            <id name="" type="">
               <column name=""/>
               <generator class="native"/>
            </id>
         这里应该改为:
             <id name="" type="">
               <column name=""/>
               <generator class="foreign">
                    <param name="property">user</param>
                </generator>
            </id>

2、一对多、多对一、以及双向多对一关联关系;
   
    首先讨论多对一的单向关联:这里有两张表;分别是email和user表;email为多的一方,而user为一

   的一方,
    email:id,emailname,uid;
    user:  uid, uname
    有持久化类:User 和 Email
    这里所谓单向就是说查询email表可以查出这个email是属于谁的,但是只查询user表不知道有多少个

   email;
     因此在持久化类中在多的一方,有一个一的一方的对象的属性;而在一的一方没有这方面的信息;
    所以在配置的时候就只在多的一方(email)中配置
    <many-to-one name="user" class="" column="uid"/>这样就够了;但是这个时候在持久化的时候需

   要都调用save方法,这个时候还要加个级联属性:cascade=“all(save-update)”,那么这个时候 

  只需要持久化这个email对象就够了,而不需要持久化user了。同时还有一个属性就是:outer-join   

;这个属性是指在查询的时候是否使用外连接;如果不使用,那么查询的时候就会查询两次;
   
    另外,再讨论一下一对多的单向关联:
    从一的一方看,这就是一对多的关系,表同上,只是在持久化中就有点区别了,这里在User中有个包

    含set集合的属性,而在email中没有任何的设置,先前的user属性也不需要了,因为这是单向的影射

   ,所以不需要这样的设置。而在映射文件中就只在uses一方设计就好了。
    <set name="emails" table="email">
      <key column="uid"></key>  //这里的key是在email表中参照user表的外键
      <one-to-many class="Email"> //这里的class肯定是填的是many这一方的类名
    </set>
  
    最后再说一下多对一双向关联,只要把两边都加上,能让你找到我,让我找到你的话就可以了。

3、多对多关联(比较典型的就是权限设计的时候)
   在做多对多关联映射的时候,都会有一张关联表;
   第一、单向多对多
   第二、双向多对多
   单向多对多跟双向多对多本身没有多大的区别,只是必须有一边来维护他们之间的关系;
   比如说:有两张表;user 和 power表
   要建立它们的多对多的影射关系,那么这里必须在数据库中再建立一张表(连接表)user_power
   那么在持久化类中设置一个属性--set。那么需要在映射文件中配置这个set的映射
   <set name="" table="关联表名">
      <key column=""></key>
      <many-to-many class="" column="">
   </set>
   下面来解释一下中间属性的作用;
    A: name:这里就是配置在所在持久化类中的set属性名
    B:table:这里就是关联表名,因为它们的关系就是靠这张关联表来维护
    C:column:这里设置的是在关联表中,与持久化类所在表的关联字段
    D:class:这里的many端,也就是name所对应的类;
    E:第二个col
分享到:
评论

相关推荐

    Hibernate实体映射

    本资源“Hibernate实体映射”提供了一个深入理解这一关键概念的机会,通过实例代码和教程笔记,帮助学习者更好地掌握Hibernate的核心功能。 一、Hibernate实体映射基础 在Hibernate中,实体映射是将Java对象模型与...

    Hibernate映射笔记

    ### Hibernate映射笔记详解 #### Hibernate映射文件与配置关系 Hibernate映射是ORM(对象关系映射)框架中的一项关键技术,它允许开发者在数据库表和Java对象之间建立映射关系,从而简化了数据访问层的开发工作。...

    Hibernate中单一映射笔记

    在本篇中,我们将深入探讨Hibernate中的单一映射机制,这是一种在Java应用程序中实现对象关系映射(ORM)的关键技术。Hibernate是一个流行的开源框架,它简化了与数据库的交互,通过对象模型自动处理数据的持久化。...

    Hibernate_容器映射技术笔记

    本篇笔记主要探讨了如何使用Hibernate进行容器映射,特别是针对集合类型的映射,如List、Set和Map。 首先,我们来看集合类型在Hibernate中的映射: 1. **单值Collection**: 这种情况通常指的是一个对象与多个其他...

    hibernate_day02笔记

    【hibernate_day02笔记】...以上就是Hibernate_day02笔记中的主要知识点,包括ORM思想、实体类设计、主键策略、操作实体类的方法、对象状态、一级缓存以及事务管理。这些内容构成了使用Hibernate进行数据库操作的基础。

    Hibernate3.3_学习笔记.doc.zip

    《Hibernate3.3_学习笔记》是一份详细记录了Hibernate3.3版本特性和使用方法的文档,旨在帮助开发者深入理解和应用这一强大的对象关系映射(ORM)框架。Hibernate是Java开发中的一个明星库,它简化了数据库操作,...

    韩顺平.2011版.hibernate笔记.zip

    笔记讲解了如何定义实体类,如何使用注解或XML进行对象关系映射,以及如何使用Hibernate的API进行持久化操作,如保存(save())、更新(update())和删除(delete())实体。 4. 会话管理:Hibernate的会话接口...

    Hibernate学习笔记特别详细

    以上便是对Hibernate基础的概览,实际开发中,还需要深入了解实体关系映射、集合映射、级联操作、缓存机制、事务管理、性能优化等方面的知识,才能更好地利用Hibernate提升开发效率并保证应用程序的稳定运行。...

    hibernate 4.3.10 版本的笔记

    #### 二、Hibernate实体映射 实体映射是Hibernate的核心功能之一。这部分内容主要涉及如何使用XML映射文件和注解的方式来进行实体映射。 **XML映射文件示例:** - **Student.hbm.xml** 文件用于定义`Student`类与...

    hibernate个人学习笔记完整版

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

    Hibernate学习笔记与总结

    - **@Entity注解**: 用于标记一个类为Hibernate实体类。 - **@Table注解**: 指定实体类映射到哪个数据库表。 - **@Id注解**: 标识实体类的主键字段。 - **@GeneratedValue注解**: 配置主键生成策略,如自增、...

    传智博客Hibernate框架2016版笔记资料day01~02

    【描述】"传智博客Hibernate框架2016版笔记资料day01~02" 提供了两天的课程内容,通常会包含Hibernate的安装配置、对象关系映射(ORM)原理、实体类与表的映射、配置文件详解、基本的CRUD操作、查询语言(HQL)的...

    Hibernate,hibernate笔记

    Hibernate 是一个开源的对象关系映射(ORM)框架,它允许Java开发者使用面向对象的方式来操作数据库。这个框架将数据库操作转化为对Java对象的操作,简化了数据持久化的复杂度。以下是对Hibernate的一些关键知识点的...

    传智博客Hibernate框架2016版笔记资料day03~04

    2. **对象关系映射(ORM)**:Day03至04的笔记可能深入解析了Hibernate的ORM机制,包括实体类的创建、注解的使用,以及如何通过XML映射文件来定义对象与数据库表之间的关系。 3. **实体管理**:这部分会介绍实体类...

    Hibernate实体层设计

    通过学习这些实例代码和笔记,你可以深入了解Hibernate实体层设计,掌握如何在实际项目中有效地使用Hibernate进行数据库操作。这将有助于提高开发效率,降低维护成本,同时使代码更加健壮和易于扩展。

    Hibernate -annotation 学习笔记

    Hibernate 是一个流行的开源Java对象关系映射(ORM)框架,它极大地简化了数据库操作,使得开发人员可以使用面向对象的方式处理数据存储。Annotation是Hibernate提供的一种元数据方式,允许在Java类和字段上直接添加...

    hibernate-note学习笔记

    Hibernate作为一种ORM(Object-Relational Mapping)框架,它能够自动地将对象模型映射到关系型数据库模型,并提供了一种高级接口来操作数据库。 **1.2 体系结构** Hibernate的核心架构由以下几个部分组成: - **POJO...

    韩顺平hibernate笔记

    Hibernate作为Java领域中广泛使用的对象关系映射(ORM)框架,极大地简化了数据库操作,使得开发者可以更加专注于业务逻辑,而不是底层数据库的细节。这份笔记涵盖了从基础到高级的Hibernate应用,包括配置、实体...

Global site tag (gtag.js) - Google Analytics