(1)一对一关联映射含义:
既两个对象之间的一对一关系,以及如何加载它的引用对象如:Person(人) <--对应-->IdCard(身份证号)
(2)实现一对一关联的两种策略
1)主键关联:既让两个对象拥有相同的主键值,既表明他们是一一对应的关系;
数据库不会有额外的字段来维护他们之间的关系,仅通过表的主键关联。
2)唯一外键关联:外键关联,本来用来配置多对一的关系映射,但是如果加上唯一的限
制后,也可以用来实现一对一关联映射。
(3)实体类ER图
Person IdCard
------------- -------------
id:int id:int
name:String carNo:String
IdCard:idCard(引用)
实体类在数据库中表的表现形式:
t_person t_idCard
------------- -------------
id | name id | carNO
1 | alpha 1 | 88888
说明1:因为要查询到某个人和这个人的身份证号,所以人的实体类需要持有身份证类的引用;反之如果先拿到身份证号,需要找到身份证号对应的某个人,那么就需要咋身份证类中持有人的实体类的引用。
说明2:单向一对一就是从人的实体类可以找到某个人对应身份证号类中的号码,反之不行。
假如规定只能从人的实体类中找到该人在身份证号实体类中对应的身份证号码则:
此时Person类中的id就有两个角色,既是Person类的主键和IdCard类的外键
双向一对一就是从任何一个类都可以找到另一类中一一对应的信息。
主键关联的讲解:
(1)通过t_person和t_idCard两张表中id实现相同逐渐关联
(2)因为Person类中含有对IdCard类的引用,所以必须先有身份证号,后有人的信息
(3)重点:此时Person类的id不是自己生成而是参照IdCard类的id生成(通过配置文件实现)
(4)实现:通过配置文件将对象关系转换成类--表的关系映射
Person.hbm.xml文件的核心配置
<class name="com.tarena.pojo.Person" table="t_person">
<id name="id">
<generator class="foreign"><!--注意此处主键生成策略是foreign-->
<param name="perpoty">idCard(此处为Person类中IdCard的引用)</param>
</generator>
</id>
<one-to-one name="idCard" constrained="true"/>
<!--此标签name的属性也是IdCard的引用,使约束属性为true,目的说明Person的id也是IdCard的外键约束-->
</class>
(5)测试代码
IdCard idCard = new IdCard();(插入操作)
idCard.setCardNO("88888888");//默认了cascade级联属性所以它是第一个存
Person person = new Person;
person.setName("张三");
persion.setIdCard(idCard);//将身份证类的实例赋值给Person的引用
session.save(person);//将Person实例存入数据库
Person person =(Person)session.load(Person.Class,1);(查询操作,传id)
System.out.println("person.name"+person.getName());
System.out.println("person.cardNO"+person.getIdCard().getCardNO;
分享到:
相关推荐
在Hibernate中,一对一唯一外键关联映射可以通过 `<many-to-one>` 标签来配置。例如,以下是Person实体与IdCard实体的一对一唯一外键关联映射配置: ```xml <many-to-one name="idCard" column="card_id...
一、一对一(one-to-one)与一对多(one-to-many)关系 1. 一对一关系: 在现实世界中,如一个人只有一个身份证,这就是典型的"一对一"关系。在Hibernate中,可以通过@OneToOne注解实现。这种关系通常需要使用外键...
本教程将深入探讨Spring和Hibernate结合使用时的一对多关联映射,特别是部门与员工表的级联添加。 在数据库设计中,一对多关联是一个常见的关系类型,例如一个部门可以有多名员工,但每个员工只能属于一个部门。在...
本话题主要探讨的是Hibernate中的一种关联映射方式——一对一(One-to-One)单向外键关联。这种关联模式通常用于两个实体之间存在唯一对应的关系,例如一个用户对应一个唯一的账户。 在Hibernate中,一对一关联可以...
本话题主要探讨两种基本的关系映射类型:many-to-one(多对一)和one-to-many(一对多)。这两种关系映射是数据库中常见的关联类型,理解和掌握它们对于开发高质量的Java应用至关重要。 1. many-to-one关系 many-to...
在数据库世界中,一对多(One-to-Many)关系是一种常见的关联类型,其中一个表(父表)可以与多个其他表(子表)相关联。在NHibernate中,配置这种映射关系对于理解和使用ORM至关重要。 一对多关系意味着一个实体...
关联映射的本质: 将关联关系映射到数据库,所谓的...<many-to-one>会在多的一端加入一个外键,指向一的一端,这个外键是由<many-to-one> 中的column属性定义的,如果忽略了这个属性那么默认的外键与实体的属性一致
一对一关联映射是指两个实体类之间存在一对一的关系,即每个实体实例对应数据库中的一条记录,且这条记录在另一张表中也有唯一对应的记录。在 MyBatis 中,我们可以通过 XML 映射文件或者注解来配置这种关联关系。 ...
1. **一对一关联映射** - **主键关联**(Single-Table):在这种情况下,两个实体共享同一个主键。在映射文件中,我们使用`<one-to-one>`标签,并通过`constrained`属性来指定约束。例如,Person和IdCard的单向...
本文主要关注Hibernate中的一个核心概念——一对一(One-to-One)、一对多(One-to-Many)和多对一(Many-to-One)关联映射,特别是关于“一到多”单向和双向关联映射的配置心得。 首先,让我们了解“一到多”关联...
在Java的持久化框架Hibernate中,一对一(One-to-One)关联映射是一种常见的关系数据库模型映射方式。这种关联通常发生在两个实体之间,且每个实体都只有一个对应的实例。本篇文章将详细探讨双向一对一主键关联映射...
在Hibernate框架中,双向一对多关联映射是常见的对象关系映射(ORM)方式,用于在Java对象模型中表示数据库中的两个实体之间的多对一关系。在这个场景中,"一"端通常指的是一个实体可以拥有多个另一个实体的实例,而...
在Java的持久化框架Hibernate中,一对一(One-to-One)关联映射是常见的关系映射方式之一,尤其在处理两个实体之间存在唯一对应关系时非常有用。本篇将重点讲解如何实现一对一主键关联映射的单向关联,并通过一个...
在Java的持久化框架Hibernate中,一对一(One-to-One)关联映射是一种常见的关系映射方式,用于表示两个实体之间一对一的对应关系。本篇主要探讨的是基于主键(Primary Key)的双向关联映射,这在实际项目中非常常见...
一对一关联可以通过 `<one-to-one>` 标签实现。假设我们有 `Book` 和 `Author` 两个实体类,每个 `Book` 只有一个 `Author`。 ```java public class Author { private Long id; private String name; private ...
在Java的持久化框架Hibernate中,一对一(One-to-One)关联映射是常见的关系数据库模型在对象模型中的体现。这种关联通常用于表示两个实体之间非常特殊的联系,比如一个人只有一个身份证,或者一个公司只有一个总部...
首先,一对一关联映射(One-to-One)是两个实体之间存在唯一的对应关系。在Hibernate中,可以通过@OneToOne注解来实现这种映射。例如,`hibernate_one2one_ufk_1`和`hibernate_one2one_ufk_2`可能表示使用外键约束...
1. 一对一关联映射(One-to-One) 在数据库设计中,一对一关系通常发生在两个实体之间,每个实体最多只能与另一个实体的一个实例相关联。在Hibernate中,通过`@OneToOne`注解实现这种关系。你可以指定`mappedBy`...
-- 一对一关联映射 --> <!-- 一对多关联映射 --> ``` 在上面的例子中,我们定义了一个`User`实体类,它有一个`Address`对象和一个`Order`对象的列表。`<association>`标签用于映射一对一关系,`...
总结来说,Hibernate的一对一关联提供了一种方便的方式来管理两个实体之间的唯一对应关系,它通过注解或XML配置进行声明,并支持各种持久化操作。在实际应用中,要根据业务需求合理设计和优化这种关系,以确保数据的...