实体关联映射:
1、一对一映射:
主要有两种方式来映射:
一、基于外键的映射方式:
首先有两张表,例如:TABEL user AND card;card 表中参照一个user的主键id
首先就是要保证这两个类中,必须要分别有各自的一个连接;也就是说在各个类中有另外一个类
的一个属性;比如说:
class User
{
private Card card;//card的一个属性
}
class Card
{
private User user;//user的一个属性
}
这个时候配置就是在user的配置文件中;
<one-to-one name="card" class="" cascade="save-update" property-ref="user"/>
注意这里的property-ref属性:它是指在映射中,user找到card是通过user这样一个属性来
找到的,如果不这样设置,那么就会在关联中出现user的id和card的id相关联的情况;
而在card的配置文件中;
<many-to-one name="user" class="" column="userid" unique="true">
注意这里column指如何找到user呢?是通过在表中的userid来找到的。而这里的unique指的
是限制为了一对一
二、基于主键的约束
这里仍然有两张表,这两张表分别是:user 和 card 而这个时候,在card表中,并没有userid
这一列,但是还是有一个参照userid的外键约束,这里的card中的id主要就是参照的是user中的id
而上面基本上没有什么改变。只是在配置文件中;
在user的配置文件中,
<one-to-one name="card" class="" cascade="save-update"/>
这里不需要配置property-ref属性
在card中
<one-to-one name="user" class="" constrainted="true"/>
另外在主键中也要改;开始的时
<id name="" type="">
<column name=""/>
<generator class="native"/>
</id>
这里应该改为:
<id name="" type="">
<column name=""/>
<generator class="foreign">
<param name="property">user</param>
</generator>
</id>
2、一对多、多对一、以及双向多对一关联关系;
首先讨论多对一的单向关联:这里有两张表;分别是email和user表;email为多的一方,而user为一
的一方,
email:id,emailname,uid;
user: uid, uname
有持久化类:User 和 Email
这里所谓单向就是说查询email表可以查出这个email是属于谁的,但是只查询user表不知道有多少个
email;
因此在持久化类中在多的一方,有一个一的一方的对象的属性;而在一的一方没有这方面的信息;
所以在配置的时候就只在多的一方(email)中配置
<many-to-one name="user" class="" column="uid"/>这样就够了;但是这个时候在持久化的时候需
要都调用save方法,这个时候还要加个级联属性:cascade=“all(save-update)”,那么这个时候
只需要持久化这个email对象就够了,而不需要持久化user了。同时还有一个属性就是:outer-join
;这个属性是指在查询的时候是否使用外连接;如果不使用,那么查询的时候就会查询两次;
另外,再讨论一下一对多的单向关联:
从一的一方看,这就是一对多的关系,表同上,只是在持久化中就有点区别了,这里在User中有个包
含set集合的属性,而在email中没有任何的设置,先前的user属性也不需要了,因为这是单向的影射
,所以不需要这样的设置。而在映射文件中就只在uses一方设计就好了。
<set name="emails" table="email">
<key column="uid"></key> //这里的key是在email表中参照user表的外键
<one-to-many class="Email"> //这里的class肯定是填的是many这一方的类名
</set>
最后再说一下多对一双向关联,只要把两边都加上,能让你找到我,让我找到你的话就可以了。
3、多对多关联(比较典型的就是权限设计的时候)
在做多对多关联映射的时候,都会有一张关联表;
第一、单向多对多
第二、双向多对多
单向多对多跟双向多对多本身没有多大的区别,只是必须有一边来维护他们之间的关系;
比如说:有两张表;user 和 power表
要建立它们的多对多的影射关系,那么这里必须在数据库中再建立一张表(连接表)user_power
那么在持久化类中设置一个属性--set。那么需要在映射文件中配置这个set的映射
<set name="" table="关联表名">
<key column=""></key>
<many-to-many class="" column="">
</set>
下面来解释一下中间属性的作用;
A: name:这里就是配置在所在持久化类中的set属性名
B:table:这里就是关联表名,因为它们的关系就是靠这张关联表来维护
C:column:这里设置的是在关联表中,与持久化类所在表的关联字段
D:class:这里的many端,也就是name所对应的类;
E:第二个col
分享到:
相关推荐
本资源“Hibernate实体映射”提供了一个深入理解这一关键概念的机会,通过实例代码和教程笔记,帮助学习者更好地掌握Hibernate的核心功能。 一、Hibernate实体映射基础 在Hibernate中,实体映射是将Java对象模型与...
### Hibernate映射笔记详解 #### Hibernate映射文件与配置关系 Hibernate映射是ORM(对象关系映射)框架中的一项关键技术,它允许开发者在数据库表和Java对象之间建立映射关系,从而简化了数据访问层的开发工作。...
在本篇中,我们将深入探讨Hibernate中的单一映射机制,这是一种在Java应用程序中实现对象关系映射(ORM)的关键技术。Hibernate是一个流行的开源框架,它简化了与数据库的交互,通过对象模型自动处理数据的持久化。...
本篇笔记主要探讨了如何使用Hibernate进行容器映射,特别是针对集合类型的映射,如List、Set和Map。 首先,我们来看集合类型在Hibernate中的映射: 1. **单值Collection**: 这种情况通常指的是一个对象与多个其他...
【hibernate_day02笔记】...以上就是Hibernate_day02笔记中的主要知识点,包括ORM思想、实体类设计、主键策略、操作实体类的方法、对象状态、一级缓存以及事务管理。这些内容构成了使用Hibernate进行数据库操作的基础。
《Hibernate3.3_学习笔记》是一份详细记录了Hibernate3.3版本特性和使用方法的文档,旨在帮助开发者深入理解和应用这一强大的对象关系映射(ORM)框架。Hibernate是Java开发中的一个明星库,它简化了数据库操作,...
笔记讲解了如何定义实体类,如何使用注解或XML进行对象关系映射,以及如何使用Hibernate的API进行持久化操作,如保存(save())、更新(update())和删除(delete())实体。 4. 会话管理:Hibernate的会话接口...
以上便是对Hibernate基础的概览,实际开发中,还需要深入了解实体关系映射、集合映射、级联操作、缓存机制、事务管理、性能优化等方面的知识,才能更好地利用Hibernate提升开发效率并保证应用程序的稳定运行。...
#### 二、Hibernate实体映射 实体映射是Hibernate的核心功能之一。这部分内容主要涉及如何使用XML映射文件和注解的方式来进行实体映射。 **XML映射文件示例:** - **Student.hbm.xml** 文件用于定义`Student`类与...
【hibernate个人学习笔记完整版】是一份详尽的资料,涵盖了Hibernate框架的基础到高级应用,旨在帮助学习者深入理解和掌握这一强大的Java对象关系映射(ORM)工具。Hibernate作为Java开发中的主流ORM框架,它极大地...
- **@Entity注解**: 用于标记一个类为Hibernate实体类。 - **@Table注解**: 指定实体类映射到哪个数据库表。 - **@Id注解**: 标识实体类的主键字段。 - **@GeneratedValue注解**: 配置主键生成策略,如自增、...
【描述】"传智博客Hibernate框架2016版笔记资料day01~02" 提供了两天的课程内容,通常会包含Hibernate的安装配置、对象关系映射(ORM)原理、实体类与表的映射、配置文件详解、基本的CRUD操作、查询语言(HQL)的...
Hibernate 是一个开源的对象关系映射(ORM)框架,它允许Java开发者使用面向对象的方式来操作数据库。这个框架将数据库操作转化为对Java对象的操作,简化了数据持久化的复杂度。以下是对Hibernate的一些关键知识点的...
2. **对象关系映射(ORM)**:Day03至04的笔记可能深入解析了Hibernate的ORM机制,包括实体类的创建、注解的使用,以及如何通过XML映射文件来定义对象与数据库表之间的关系。 3. **实体管理**:这部分会介绍实体类...
通过学习这些实例代码和笔记,你可以深入了解Hibernate实体层设计,掌握如何在实际项目中有效地使用Hibernate进行数据库操作。这将有助于提高开发效率,降低维护成本,同时使代码更加健壮和易于扩展。
Hibernate 是一个流行的开源Java对象关系映射(ORM)框架,它极大地简化了数据库操作,使得开发人员可以使用面向对象的方式处理数据存储。Annotation是Hibernate提供的一种元数据方式,允许在Java类和字段上直接添加...
Hibernate作为一种ORM(Object-Relational Mapping)框架,它能够自动地将对象模型映射到关系型数据库模型,并提供了一种高级接口来操作数据库。 **1.2 体系结构** Hibernate的核心架构由以下几个部分组成: - **POJO...
Hibernate作为Java领域中广泛使用的对象关系映射(ORM)框架,极大地简化了数据库操作,使得开发者可以更加专注于业务逻辑,而不是底层数据库的细节。这份笔记涵盖了从基础到高级的Hibernate应用,包括配置、实体...