`
neeleon
  • 浏览: 183473 次
  • 性别: 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 API来处理这种关系: 1. 插入数据时,先创建父实体,然后在子实体中设置父实体的引用,最后保存子实体。Hibernate会自动处理外键的插入。 2. 查询时,可以从父实体...

    传智播客李勇hibernate源码1-20课

    传智播客李勇hibernate源码1-20课,目录如下:01_hibernate介绍... 17_一对多关联关系的映射与原理分析 18_一对一主键关联关系的映射与原理分析 19_一对一主键关联关系的检索 20_一对一外键关联关系的映射与原理分析

    hibernate-tutorials_java_hibernate_Eclipse_fallenweg_

    本教程将详细介绍如何使用`@Entity`、`@Table`、`@Id`等注解,以及如何进行一对一、一对多、多对多等关联映射。 9. **查询语言(HQL)与 Criteria API** Hibernate提供了自己的查询语言HQL(Hibernate Query ...

    Hibernate 对象关系映射

    本人在厦门邦初培训时候用的ppt 快速入门文档 内容: 建立一对多的关联关系域模型 建立一对多的参照关系的模型 映射一对多关联关系 通过hibernateAPI级联操作关联对象 其它关系的映射:一对一,多对多

    Hibernate双向一对多经典实例

    本实例将聚焦于Hibernate中的一对多关系,这是一种常见的关联类型,尤其是在处理具有层次结构的数据时。双向一对多关系意味着一个实体可以拥有多个相关联的实体,同时每个相关联的实体也可以回指到原始实体。 **...

    hibernate入门--第一个实例

    在这个“hibernate入门--第一个实例”中,我们将了解如何设置Hibernate环境,创建实体类,配置映射文件,以及执行基本的CRUD(创建、读取、更新和删除)操作。 1. **环境搭建** - **下载与安装**: 首先,你需要从...

    Hibernate入门到精通

    - 双向一对多:在双向关联中,`Class`和`Student`都能直接访问对方的集合,需在两个实体的映射文件中分别设置。 4. 多对多(Many-to-Many)关联映射: 多对多关联通常需要一个中间表(如`t_user_role`)来存储两...

    02_传智播客hibernate教程_hibernate入门案例的细节分析

    10. **关联映射**:一對一、一对多、多对一、多对多的关系映射实现,包括@OneToOne、@OneToMany、@ManyToOne、@ManyToMany等。 11. **缓存机制**:理解Hibernate的第一级缓存(Session级别)和第二级缓存...

    hibernate之一对多配置demo

    【hibernate之一对多配置demo】:在Java开发中,Hibernate是一个强大的对象关系映射(ORM)框架,它简化了数据库与Java对象之间的交互。本教程主要关注Hibernate中的一对多关系配置,并通过XML来实现,同时也涵盖了...

    hibernate系列(一)hibernate入门

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

    hibernate入门与概述

    6. **映射一对多关联关系** - 使用`@OneToMany`或`@ManyToMany`注解建立对象之间的多对一或一对多关系。 - 可以配置关联的映射字段、级联操作和缓存策略。 7. **操纵持久化对象** - Hibernate提供了CRUD(创建、...

    hibernate入门简单实例

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

    Hibernate_3.2.0_Reference_zh_CN

    2. 一对多(OneToMany):一个实体对象可以对应多个子对象,如学生与课程的关系。 3. 多对一(ManyToOne):多个实体对象对应一个父对象,如课程与教师的关系。 4. 多对多(ManyToMany):多个实体对象可以对应多个...

    Hibernate开发指南___夏昕

    “Hibernate高级特性”章节则进一步探讨了XDoclet与Hibernate映射、数据检索(包括CriteriaQuery和HQL)、数据关联(如一对一、一对多、多对多关系处理)、数据访问(PO和VO的使用)、事务管理、锁机制、分页、缓存...

    hibernate快速入门

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

    hibernate入门

    Hibernate 是一个开源的对象关系映射(ORM)框架,它允许Java开发者在Java应用程序中操作数据库,而无需直接编写SQL语句。ORM框架如Hibernate简化了数据持久化的过程,通过将对象模型与数据库模型进行映射,实现了...

    MyEclipse+Hibernate快速入门中文版

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

    01_传智播客hibernate教程_hibernate介绍与动手入门体验

    10. 引入关联和级联操作:讨论如何处理实体之间的关联,如一对一、一对多、多对一和多对多,以及级联操作的使用。 11. 缓存机制:解释Hibernate的缓存策略,包括一级缓存和二级缓存,以及它们在性能优化中的作用。 ...

    最经典的hibernate教程_从入门到精通_第二篇

    11. 高级主题:包括关联映射(一对一,一对多,多对一,多对多),懒加载,集合映射,以及时间戳和版本字段等。 12. Hibernate与Spring的整合:如果教程深入,可能会涉及如何在Spring框架中集成Hibernate,使用...

Global site tag (gtag.js) - Google Analytics