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 API来处理这种关系: 1. 插入数据时,先创建父实体,然后在子实体中设置父实体的引用,最后保存子实体。Hibernate会自动处理外键的插入。 2. 查询时,可以从父实体...
传智播客李勇hibernate源码1-20课,目录如下:01_hibernate介绍... 17_一对多关联关系的映射与原理分析 18_一对一主键关联关系的映射与原理分析 19_一对一主键关联关系的检索 20_一对一外键关联关系的映射与原理分析
本教程将详细介绍如何使用`@Entity`、`@Table`、`@Id`等注解,以及如何进行一对一、一对多、多对多等关联映射。 9. **查询语言(HQL)与 Criteria API** Hibernate提供了自己的查询语言HQL(Hibernate Query ...
本人在厦门邦初培训时候用的ppt 快速入门文档 内容: 建立一对多的关联关系域模型 建立一对多的参照关系的模型 映射一对多关联关系 通过hibernateAPI级联操作关联对象 其它关系的映射:一对一,多对多
本实例将聚焦于Hibernate中的一对多关系,这是一种常见的关联类型,尤其是在处理具有层次结构的数据时。双向一对多关系意味着一个实体可以拥有多个相关联的实体,同时每个相关联的实体也可以回指到原始实体。 **...
在这个“hibernate入门--第一个实例”中,我们将了解如何设置Hibernate环境,创建实体类,配置映射文件,以及执行基本的CRUD(创建、读取、更新和删除)操作。 1. **环境搭建** - **下载与安装**: 首先,你需要从...
- 双向一对多:在双向关联中,`Class`和`Student`都能直接访问对方的集合,需在两个实体的映射文件中分别设置。 4. 多对多(Many-to-Many)关联映射: 多对多关联通常需要一个中间表(如`t_user_role`)来存储两...
10. **关联映射**:一對一、一对多、多对一、多对多的关系映射实现,包括@OneToOne、@OneToMany、@ManyToOne、@ManyToMany等。 11. **缓存机制**:理解Hibernate的第一级缓存(Session级别)和第二级缓存...
【hibernate之一对多配置demo】:在Java开发中,Hibernate是一个强大的对象关系映射(ORM)框架,它简化了数据库与Java对象之间的交互。本教程主要关注Hibernate中的一对多关系配置,并通过XML来实现,同时也涵盖了...
Hibernate支持一对一、一对多、多对一、多对多等各种关系映射,通过注解或XML配置文件定义。例如,一个用户可以有多个订单,订单也可以属于一个用户: ```java @Entity @Table(name = "Order") public class Order ...
6. **映射一对多关联关系** - 使用`@OneToMany`或`@ManyToMany`注解建立对象之间的多对一或一对多关系。 - 可以配置关联的映射字段、级联操作和缓存策略。 7. **操纵持久化对象** - Hibernate提供了CRUD(创建、...
15. **实体关系映射策略**:包括一对一(OneToOne)、一对多(OneToMany)、多对一(ManyToOne)、多对多(ManyToMany)等,理解这些关系并正确配置是使用Hibernate的关键。 通过这个"hibernate_first"实例,你可以...
2. 一对多(OneToMany):一个实体对象可以对应多个子对象,如学生与课程的关系。 3. 多对一(ManyToOne):多个实体对象对应一个父对象,如课程与教师的关系。 4. 多对多(ManyToMany):多个实体对象可以对应多个...
“Hibernate高级特性”章节则进一步探讨了XDoclet与Hibernate映射、数据检索(包括CriteriaQuery和HQL)、数据关联(如一对一、一对多、多对多关系处理)、数据访问(PO和VO的使用)、事务管理、锁机制、分页、缓存...
2. **一对多(OneToMany)**:一个实体可以有多个相关联的实体实例。 3. **多对一(ManyToOne)**:多个实体对应一个实体实例。 4. **多对多(ManyToMany)**:多个实体可以关联多个其他实体。 ## 十、总结 通过本...
Hibernate 是一个开源的对象关系映射(ORM)框架,它允许Java开发者在Java应用程序中操作数据库,而无需直接编写SQL语句。ORM框架如Hibernate简化了数据持久化的过程,通过将对象模型与数据库模型进行映射,实现了...
- 多种映射策略:支持一对一、一对多、多对多等多种关联关系。 - 对象的持久化管理:可以实现单个对象映射到多个表。 - 支持集合类型的映射。 - 多态关联:能够处理继承关系中的关联问题。 - SQL查询的自定义:允许...
10. 引入关联和级联操作:讨论如何处理实体之间的关联,如一对一、一对多、多对一和多对多,以及级联操作的使用。 11. 缓存机制:解释Hibernate的缓存策略,包括一级缓存和二级缓存,以及它们在性能优化中的作用。 ...
11. 高级主题:包括关联映射(一对一,一对多,多对一,多对多),懒加载,集合映射,以及时间戳和版本字段等。 12. Hibernate与Spring的整合:如果教程深入,可能会涉及如何在Spring框架中集成Hibernate,使用...