`

第 2 章 hibernate关联映射 【hibernate部分】

阅读更多

 

一)为什么要学习hibernate关联映射?

        ①.    面向对象的数据和关系型数据都存在“关联”这种特性。客观上需要将这种特性在ORM时进行映射。

        ②.    配置了关联映射可以更大限度地简化编码,使我们在编写程序时可以完全按照面向对象的方式进行思考和实现。

 

二)各个映射都用在什么情况下?

             常用的关联关系有:one - to - many 关联和many to one关联。many to many 在特定场合下也会用到。

          根据业务需要确定关联的配置:

          根据业务需要配置单向或双向关联。也就是说,只需要从一方获取另一方的数据时就使用单向关联,双方都需要    获取对方数据时 就使用双向关联。

          根据业务需要配置inverse属性和cascade属性。

          以部门和人员为例,说明应用场合:

          ①.    使用人员时:

                 如果只需要获取对应部门信息(user.getDeptarment()),而不需要查看部门下的人员信息时,就配置成单向多对一

          ②.    使用部门时:

                如果只需要获取部门下人员信息(deptartmanet.getUsers()),不需要根据人员获取部门信息时,就配置成单向一对多

          ③.    既要获取部门下人员 deptartmanet.getUsers(), 又要从人员获取部门信息 user.getDeptarment()那就配置成双向一对多, 也就是双向多对一

          ④.    以学员和考试科目的关系为例,一个学员参加多个考试科目,一个考试科目可以由多个学员参加。这就可以应用多对多关联

 

三)各个映射都怎么用?

举例: 街道和区的关系, 表结构如下: 


      1. 如配置单向多对一关联关系?

答:举例,街道和区的关系

  实体类:

public class District implements java.io.Serializable {
    private Long id;
    private String name;   
    ...
}
public class Street implements java.io.Serializable {
    private Long id;
    private District district;
    private String name;
    ...
}

   映射文件:

Street.hbm.xml
<many-to-one name="district" class="cn.jbit.houserent.bean.District">
       <column name="district_id"  />
</many-to-one>

 

 2.如何配置单向一对多关联关系?

答:举例,区和街道的关系

实体类:

public class District implements java.io.Serializable {
    private Long id;
    private String name;
    private Set streets = new HashSet();
    ...
}
public class Street implements java.io.Serializable {
    private Long id;
    private Long district_id;
    private String name;
    ...
}

 映射文件:

District.hbm.xml
<set name="streets" table="street“>
     <key>
         <column name="district_id"/>
     </key>
     <one-to-many class="cn.jbit.houserent.bean.Street" />
</set>

 

3.如何配置双向一对多关联关系?

答:举例,区和街道的关系

实体类:

public class District implements java.io.Serializable {
    private Long id;
    private String name;
    private Set streets = new HashSet();
    ...
}
public class Street implements java.io.Serializable {
    private Long id;
    private District district;
    private String name;
    ...
}

   映射文件:

District.hbm.xml
<set name="streets" table="street“>
     <key>
         <column name="district_id"/>
     </key>
     <one-to-many class="cn.jbit.houserent.bean.Street" />
</set>
Street.hbm.xml
<many-to-one name="district" class="cn.jbit.houserent.bean.District">
       <column name="district_id"  />
</many-to-one>

 

4.如何配置多对多关联关系?

举例: 雇员与项目的关系, 表结构如下: 


      实体类:

public class Project  implements Serializable {
	private Integer project_id;
	private String project_name;
	private Integer project_desc;
	private Set<Employee> employees = new HashSet<Employee>();
	….
} 
public class Employee {
	private Integer employee_id;
	private String employee_name;
	private Integer employee_desc;
	private Set<Project> projects = new HashSet<Project>();
	……
}

    映射文件:

   Project.hbm.xml

<class name="Project" table="project" >
	……
    <set name=" employees " table="r_emp_proj">
        <key column="r_proj_id" />
        <many-to-many class="cn.jbit.aptech.jb.entity.Employee"
            column="r_emp_id" />
    </set>
</class> 

Employee.hbm.xml
<class name="Employee" table="employee" >
	…….
    <set name=" projects " table="r_emp_proj" inverse="true">
        <key column="r_emp_id" />
        <many-to-many class="cn.jbit.aptech.jb.entity.Project"
            column="r_proj_id" />
    </set>
</class>

 

四)cascade属性

当设置了cascade属性不为none时,Hibernate 会自动持久化所关联的对象

根据业务需要设置cascade的属性。

 

五)inverse属性

      术语“inverse”直译为反转

      在Hibernate 中,inverse属性指定了关联关系中的方向

      关联关系中,inverse="false" 的为主动方,由主动方负责维护关联关系

      在一对多关联中,将one 方的inverse 设置为true,这将有助性能的改善

例:

 

 

  • 大小: 17.5 KB
  • 大小: 31.2 KB
  • 大小: 20.2 KB
  • 大小: 22.9 KB
  • 大小: 22.9 KB
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    hibernate关联映射详解

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

    hibernate关联映射实例

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

    Hibernate关联映射

    2. Hibernate 一对一主键单向关联: 一对一主键关联是通过共享主键实现的,这意味着两个实体类共用同一个主键。在这种情况下,被引用的实体类(如 Address)不再有自己的独立主键生成策略,而是依赖于引用它的实体...

    hibernate多对多关联映射

    在Java的持久化框架Hibernate中,多对多关联映射是一种常见的关系数据库模型映射方式,用于处理两个实体之间存在多个实例互相关联的情况。本文将深入探讨Hibernate如何实现多对多关联映射,并通过实际例子解析相关...

    Hibernate关联映射.rar

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

    Hibernate集合映射与关联关系

    在IT行业中,数据库管理和对象关系映射(ORM)框架是至关重要的部分,特别是对于Java开发者而言,Hibernate是一个广泛使用的ORM工具。本主题将深入探讨Hibernate集合映射与关联关系,包括"student与Score的Map集合...

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

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

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

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

    Hibernate 关联关系映射分类

    在深入探讨Hibernate关联关系映射分类之前,我们首先简要回顾一下Hibernate框架的基本概念。Hibernate是一种持久层框架,主要用于Java应用程序中的对象关系映射(ORM),它能够将面向对象的数据模型转换为数据库中的...

    Hibernate3.x关联映射示例

    **Hibernate 3.x 关联映射详解** 在Java开发中,Hibernate是一个强大的对象关系映射(ORM)框架,它简化了数据库操作,使得开发者能够用面向对象的方式处理数据。Hibernate 3.x 版本是其成熟且广泛使用的版本,提供...

    Hibernate的关联关系映射图解

    Hibernate4中映射关系图解。

    hibernate常用关联映射源码(很实用)

    该资源包括了hibernate开发中的常见关联映射的源代码,其中包括:one2one,one2many,many2many等,还有继承映射,inverse,fetch,cascade关键字的应用等,对初学者来说,是很实用的,难度适中,很好理解

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

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

    Hibernate 关联映射

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

    Hibernate关联关系练习【全】

    总之,Hibernate关联关系是理解其工作原理的关键,它使得Java对象和数据库记录之间的映射变得简单。通过练习,你可以掌握如何配置和使用这些关系,以及如何进行相关的查询操作,从而提升你的开发效率和代码质量。...

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

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

    Hibernate关联关系映射目录

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

    Hibernate双向一对一关联映射(注解版)

    本主题聚焦于“Hibernate双向一对一关联映射”的注解实现,这是一种高级的数据库设计模式,用于处理两个实体之间一对一的关系。 在Hibernate中,一对一关联映射分为单向和双向。单向一对一映射通常涉及一个实体持有...

Global site tag (gtag.js) - Google Analytics