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

hibernate入门(六):一对多

阅读更多
2.一对多关系映射:

上面提到的多个员工对应于一个部门,是多对一的关系,如果一个部门有多个员工,则用“一对多”的关系来表示这个关系,现接上例继续,以实现一对多的关系映射。具体操作步骤如下:

>>步骤一,在Department.java中增加如下内容:private Set<Employee> emps; 及相应的get/set方法。

>>步骤二,修改Department的实体配置文件。在class元素下增加如下内容:

<set name="emps">

           <key column="depart_id"></key>

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

</set>

说明: <set>元素同样是指定一个属性,只不过是指定一个特殊的属性,key中的column为映射文件的外键,这里是指Employee.java相关的实体对象的外键。<one-to-many class="Employee"/>中的class表示关联的外键为Employee对象,也即Set中泛型机制指定的类。

>>步骤三,修改主配置文件,关联上面的实体配置文件。

>>步骤四,编写测试类,OneToManyTest.java 内容(省略导入的包)如下:

package com.asm.hibernate.test;   
public class OneToManyTest {   
    public static void main(String[] args) {   
        add();   
        query(1);   
    }   
    static Department query(int departId) {   
        Session s = null;   
        try {   
            s = HibernateUtil.getSession();   
            Department depart = (Department) s.get(Department.class, departId);   
            System.out.println("employee size:" + depart.getEmps().size());   
            return depart;   
        } finally {   
            if (s != null)   
                s.close();   
        }   
    }   
    static void add() {   
        Session s = null;   
        Transaction tx = null;   
        try {   
            Department depart = new Department();   
            depart.setName("departName");   
  
            Employee emp1 = new Employee();   
            emp1.setName("empName1");   
            emp1.setDepart(depart);   
            Employee emp2 = new Employee();   
            emp2.setName("empName2");   
            emp2.setDepart(depart);   
  
            // Set<Employee> emps = new HashSet<Employee>();   
            // emps.add(emp1);   
            // emps.add(emp2);   
            // depart.setEmps(emps);   
  
            s = HibernateUtil.getSession();   
            tx = s.beginTransaction();   
            s.save(depart);   
            s.save(emp1);   
            s.save(emp2);   
            tx.commit();   
        } finally {   
            if (s != null)   
                s.close();   
        }   
    }   
}  

说明:此类比较简单,增加两个员工信息,然后查出,同样可以体现出这种查询的方便,可以查看控制台,发现实质也是进行了两次查询操作。特别注意,上面注释掉的内容,思考怎样实现映射?如果加上注释掉的内容将会在控制台增加两条更新操作(注意更新的内容)。实际上注释掉的内容和已有内容建立了两种关联:“多对一”、“一对多”。

分享到:
评论

相关推荐

    初学hibernate,hibernate入门

    **初学Hibernate,Hibernate入门** ...随着对Hibernate的深入学习,你会发现它还支持更高级的功能,如级联操作、多对一、一对多等复杂关系映射、缓存机制、延迟加载等,这些都将极大地提升你的开发效率。

    hibernate学习入门一对多实体映射源码

    在这个“hibernate学习入门之一对多实体映射源码”教程中,我们将深入探讨如何在Hibernate中设置和管理一对多的关系。 一、Hibernate简介 Hibernate是Java开发人员用于处理数据库操作的强大工具,通过它,我们可以...

    hibernate入门--第一个实例

    【hibernate入门--第一个实例】 Hibernate 是一个强大的对象关系映射(ORM)框架,它为Java开发者提供了方便的数据持久化服务。通过使用Hibernate,我们可以将数据库操作转换为对Java对象的操作,从而简化了数据库...

    Hibernate双向一对多经典实例

    **标题:“Hibernate双向一对多经典实例”** 在Java开发中,Hibernate是一个强大的对象关系映射(ORM)框架,它简化了数据库操作,使得开发者能够用面向对象的方式处理数据。本实例将聚焦于Hibernate中的一对多关系...

    hibernate入门

    Hibernate 支持多种对象关系映射,如一对一、一对多、多对一、多对多。例如,一个User可以有多个Order: ```xml &lt;!-- User.hbm.xml --&gt; &lt;!-- Order.hbm.xml --&gt; ``` 以上就是Hibernate入门的基础内容。...

    Hibernate入门到精通.pdf

    最后,书中可能会涵盖一些高级主题,如多对一、一对多、多对多的关系映射,以及继承映射、复合组件、查询优化等。这些内容都是Hibernate深入学习的重点,对于理解和掌握复杂的数据模型以及高效的数据操作至关重要。 ...

    Hibernate基础和入门:新建表和插入表

    13. **一对多、多对一、一对一关系映射**:理解如何在实体类间建立这些关联关系,并在映射文件或注解中进行配置。 14. **集合映射**:例如List、Set、Map等集合类型的字段与数据库表的关联映射。 15. **懒加载和...

    hibernate系列(一)hibernate入门

    Hibernate支持一对一、一对多、多对一、多对多等各种关系映射,通过注解或XML配置文件定义。例如,一个用户可以有多个订单,订单也可以属于一个用户: ```java @Entity @Table(name = "Order") public class Order ...

    hibernate 映射关系学习入门 多对多实体映射

    本教程将带你入门Hibernate的多对多实体映射,帮助你理解如何通过源码来实现这种复杂的关系映射。 一、Hibernate概述 Hibernate是一个对象关系映射(ORM)框架,它允许我们将Java对象(实体)与数据库表进行映射,...

    Hibernate入门到精通

    - 单向一对多:一个实体(如`Class`)可以关联多个实体(如`Student`),`Student`的`classId`字段指向`Class`的主键。在Hibernate中,`&lt;set&gt;`或`&lt;list&gt;`标签用于表示集合,而`&lt;one-to-many&gt;`标签定义关联。 - ...

    hibernate入门简单实例

    15. **实体关系映射策略**:包括一对一(OneToOne)、一对多(OneToMany)、多对一(ManyToOne)、多对多(ManyToMany)等,理解这些关系并正确配置是使用Hibernate的关键。 通过这个"hibernate_first"实例,你可以...

    Hibernate3.1_学习源码

    案例目录: 01 01Hibernate_Handwork : 手工配置使用Hibernate,其中详细标了Hibernate进行持久化的一些过程,因为是Hibernate的入门实例,所以注释很详细,其中有... 一对一、多对一、一对多、多对多等几种情况。

    hibernate快速入门

    2. **一对多(OneToMany)**:一个实体可以有多个相关联的实体实例。 3. **多对一(ManyToOne)**:多个实体对应一个实体实例。 4. **多对多(ManyToMany)**:多个实体可以关联多个其他实体。 ## 十、总结 通过本...

    hibernate之一对多配置demo

    本教程主要关注Hibernate中的一对多关系配置,并通过XML来实现,同时也涵盖了CURD操作和级联操作,非常适合初学者入门。 一、Hibernate一对多关系 在现实世界中,一对多关系很常见,例如一个班级可以有多名学生。在...

    MyEclipse+Hibernate快速入门中文版

    - 多种映射策略:支持一对一、一对多、多对多等多种关联关系。 - 对象的持久化管理:可以实现单个对象映射到多个表。 - 支持集合类型的映射。 - 多态关联:能够处理继承关系中的关联问题。 - SQL查询的自定义:允许...

    hibernate3入门

    ### hibernate3入门知识点 #### 一、概述 **Hibernate**是一种对象关系映射(Object/Relational Mapping,简称ORM)解决方案,它提供了一种机制,用于将Java对象及其关系映射到关系型数据库中的表及其关系。通过...

    struts+hibernate入门实例(eclipse版)

    ### Struts + Hibernate 入门实例(Eclipse 版) #### 一、开发环境搭建 在本章节中,作者朱千平将引导我们完成开发环境的搭建,包括以下几个步骤: 1. **下载安装Eclipse**: Eclipse 是一个开源的集成开发环境...

    hibernate入门需要的包

    11. **一对多、多对一、多对多关系映射**:学习如何在实体类之间建立这些关系,并在映射文件或注解中正确配置。 12. **懒加载和立即加载**:理解这两个概念,以及它们在优化性能时的作用。 以上是Hibernate入门的...

    Hibernate 手册 第一章 Hibernate入门

    《Hibernate 手册 第一章 Hibernate入门》 Hibernate 是一个开放源码的Java持久化框架,它为Java开发者提供了一种对象关系映射工具来管理Java应用中的关系数据。本章将带你逐步走进Hibernate的世界,了解其基本概念...

Global site tag (gtag.js) - Google Analytics