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是Java开发人员用于处理数据库操作的强大工具,通过它,我们可以...
【hibernate入门--第一个实例】 Hibernate 是一个强大的对象关系映射(ORM)框架,它为Java开发者提供了方便的数据持久化服务。通过使用Hibernate,我们可以将数据库操作转换为对Java对象的操作,从而简化了数据库...
**标题:“Hibernate双向一对多经典实例”** 在Java开发中,Hibernate是一个强大的对象关系映射(ORM)框架,它简化了数据库操作,使得开发者能够用面向对象的方式处理数据。本实例将聚焦于Hibernate中的一对多关系...
Hibernate 支持多种对象关系映射,如一对一、一对多、多对一、多对多。例如,一个User可以有多个Order: ```xml <!-- User.hbm.xml --> <!-- Order.hbm.xml --> ``` 以上就是Hibernate入门的基础内容。...
最后,书中可能会涵盖一些高级主题,如多对一、一对多、多对多的关系映射,以及继承映射、复合组件、查询优化等。这些内容都是Hibernate深入学习的重点,对于理解和掌握复杂的数据模型以及高效的数据操作至关重要。 ...
13. **一对多、多对一、一对一关系映射**:理解如何在实体类间建立这些关联关系,并在映射文件或注解中进行配置。 14. **集合映射**:例如List、Set、Map等集合类型的字段与数据库表的关联映射。 15. **懒加载和...
Hibernate支持一对一、一对多、多对一、多对多等各种关系映射,通过注解或XML配置文件定义。例如,一个用户可以有多个订单,订单也可以属于一个用户: ```java @Entity @Table(name = "Order") public class Order ...
本教程将带你入门Hibernate的多对多实体映射,帮助你理解如何通过源码来实现这种复杂的关系映射。 一、Hibernate概述 Hibernate是一个对象关系映射(ORM)框架,它允许我们将Java对象(实体)与数据库表进行映射,...
- 单向一对多:一个实体(如`Class`)可以关联多个实体(如`Student`),`Student`的`classId`字段指向`Class`的主键。在Hibernate中,`<set>`或`<list>`标签用于表示集合,而`<one-to-many>`标签定义关联。 - ...
15. **实体关系映射策略**:包括一对一(OneToOne)、一对多(OneToMany)、多对一(ManyToOne)、多对多(ManyToMany)等,理解这些关系并正确配置是使用Hibernate的关键。 通过这个"hibernate_first"实例,你可以...
案例目录: 01 01Hibernate_Handwork : 手工配置使用Hibernate,其中详细标了Hibernate进行持久化的一些过程,因为是Hibernate的入门实例,所以注释很详细,其中有... 一对一、多对一、一对多、多对多等几种情况。
2. **一对多(OneToMany)**:一个实体可以有多个相关联的实体实例。 3. **多对一(ManyToOne)**:多个实体对应一个实体实例。 4. **多对多(ManyToMany)**:多个实体可以关联多个其他实体。 ## 十、总结 通过本...
本教程主要关注Hibernate中的一对多关系配置,并通过XML来实现,同时也涵盖了CURD操作和级联操作,非常适合初学者入门。 一、Hibernate一对多关系 在现实世界中,一对多关系很常见,例如一个班级可以有多名学生。在...
- 多种映射策略:支持一对一、一对多、多对多等多种关联关系。 - 对象的持久化管理:可以实现单个对象映射到多个表。 - 支持集合类型的映射。 - 多态关联:能够处理继承关系中的关联问题。 - SQL查询的自定义:允许...
### hibernate3入门知识点 #### 一、概述 **Hibernate**是一种对象关系映射(Object/Relational Mapping,简称ORM)解决方案,它提供了一种机制,用于将Java对象及其关系映射到关系型数据库中的表及其关系。通过...
### Struts + Hibernate 入门实例(Eclipse 版) #### 一、开发环境搭建 在本章节中,作者朱千平将引导我们完成开发环境的搭建,包括以下几个步骤: 1. **下载安装Eclipse**: Eclipse 是一个开源的集成开发环境...
11. **一对多、多对一、多对多关系映射**:学习如何在实体类之间建立这些关系,并在映射文件或注解中正确配置。 12. **懒加载和立即加载**:理解这两个概念,以及它们在优化性能时的作用。 以上是Hibernate入门的...
《Hibernate 手册 第一章 Hibernate入门》 Hibernate 是一个开放源码的Java持久化框架,它为Java开发者提供了一种对象关系映射工具来管理Java应用中的关系数据。本章将带你逐步走进Hibernate的世界,了解其基本概念...