一)为什么要学习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,包含4个说明文档,分别详细解说了hibernate关联映射的...
本文将深入探讨“hibernate关联映射实例”中的关键知识点,包括一对多、多对多和继承映射,这些都是Hibernate中至关重要的概念。 1. **一对多关联映射**: 在现实世界中,一个实体可能会与多个其他实体相关联,...
2. Hibernate 一对一主键单向关联: 一对一主键关联是通过共享主键实现的,这意味着两个实体类共用同一个主键。在这种情况下,被引用的实体类(如 Address)不再有自己的独立主键生成策略,而是依赖于引用它的实体...
在Java的持久化框架Hibernate中,多对多关联映射是一种常见的关系数据库模型映射方式,用于处理两个实体之间存在多个实例互相关联的情况。本文将深入探讨Hibernate如何实现多对多关联映射,并通过实际例子解析相关...
本教程“Hibernate关联映射.rar”聚焦于Hibernate中的关联映射,特别是多对一和一对多的关系映射,非常适合初学者了解和实践。 首先,我们要理解什么是关联映射。在数据库中,表与表之间存在各种关系,如一对一、一...
在IT行业中,数据库管理和对象关系映射(ORM)框架是至关重要的部分,特别是对于Java开发者而言,Hibernate是一个广泛使用的ORM工具。本主题将深入探讨Hibernate集合映射与关联关系,包括"student与Score的Map集合...
在Java的持久化框架Hibernate中,一对一(One-to-One)关联映射是一种常见的关系数据库模型映射方式。这种关联通常发生在两个实体之间,且每个实体都只有一个对应的实例。本篇文章将详细探讨双向一对一主键关联映射...
总的来说,这个压缩包提供了丰富的Hibernate关联映射的学习资源,涵盖了从基础到进阶的各种关联类型。通过学习这些示例,你将能够熟练掌握如何在Java项目中使用Hibernate进行数据持久化,并灵活地处理各种数据库关系...
在深入探讨Hibernate关联关系映射分类之前,我们首先简要回顾一下Hibernate框架的基本概念。Hibernate是一种持久层框架,主要用于Java应用程序中的对象关系映射(ORM),它能够将面向对象的数据模型转换为数据库中的...
**Hibernate 3.x 关联映射详解** 在Java开发中,Hibernate是一个强大的对象关系映射(ORM)框架,它简化了数据库操作,使得开发者能够用面向对象的方式处理数据。Hibernate 3.x 版本是其成熟且广泛使用的版本,提供...
Hibernate4中映射关系图解。
【hibernate关联映射详解】 Hibernate 是一款流行的Java持久层框架,用于简化数据库操作。在Hibernate中,关联映射是实现对象关系映射(ORM)的关键,它允许我们在对象模型和关系数据库之间建立联系。关联映射主要...
该资源包括了hibernate开发中的常见关联映射的源代码,其中包括:one2one,one2many,many2many等,还有继承映射,inverse,fetch,cascade关键字的应用等,对初学者来说,是很实用的,难度适中,很好理解
在Java的持久化框架Hibernate中,关联映射是至关重要的概念,它允许我们将数据库中的表关系映射到对象之间的关系。SSH(Struts、Spring、Hibernate)是经典的Java Web开发框架,其中Hibernate负责数据访问层,提供了...
这可能是测试Hibernate关联映射的一个示例项目或者类。通常,这样的测试会包含各种关联映射的实例,如实体类的定义,配置文件或注解,以及测试用例,用于验证关联映射是否按预期工作。 **详细知识讲解:** 1. **一...
总之,Hibernate关联关系是理解其工作原理的关键,它使得Java对象和数据库记录之间的映射变得简单。通过练习,你可以掌握如何配置和使用这些关系,以及如何进行相关的查询操作,从而提升你的开发效率和代码质量。...
本篇文章将深入探讨Hibernate中的关联映射,特别是One-to-One(一对一)关联,这是一种表示两个实体之间一对一关系的映射方式。我们将通过源码分析和实际例子来理解其工作原理。 ### 一、One-to-One关联概述 在...
### Hibernate关联关系映射 #### 一、单向关联 单向关联指的是对象之间的关联关系只在一个方向上存在,也就是说这种关联关系仅在一个类中表示出来,在另一个类中不体现这种关联。 ##### 1. 一对一外键单向关联 ...