本节讲述一下Hibernate中一对一关系的配置和使用。一对一关系也是比较常见的一种关系,在Hibernate中可以分为单向一对一关系和双向一对一关系。分类的原因一般是由于需求决定的,单双向是站在不同的角度去看认为规定的。一对一关系相对来说比较少见。但是在某些时候也会用到。比如学生和学生证两个实体就是一对一的。
单向一对一
单向一对一是站在其中的一端看的,主要是根据需求决定的。单向标明一端持有另一端的引用,而另一端则没有引用。如下UML图:
这里面Student持有Card的引用,在加载Student的时候,Hibernate会自动加载上Card来。它们的hbm配置文件如下:
Student.hbm.xml.负责维护关系
Card.hbm.xml不负责维护主键,是一个简单的映射文件。
双向一对一
双向一对一是彼此都持有对方的引用,在一端加载的时候,另一端就会自动加载上来。看看双向一对一的UML图
配置文件如下
它和上面的单向的Student.hbm.xml配置一样,这两个不同的是在Card.hbm.xml中使用<one-to-one>标签把它持有的student加载上来。
上面的两种一对一都是采用主键关联的方式,即它们两个表的主键是一样的,student用的表是采用foreign的方式,引用Card的主键。一对一关联还有一种外键关联的方式。它的UML图和双向一对一一样,只是配置文件不一样。
首先看一下它们各自的配置文件。Student.hbml.xml和Card.hbm.xml
一对一外键关联,其实可以看做是一对多的一种特殊形式,多方退化成一。多方退化成一只需要在<many-to-one>标签中设置"unique"="true"。
这里面重要的一个知识点就是<many-to-one>和<one-to-one>的区别,这里主要应用了这个不同。<many-to-one>不仅可以加载到另一端的数据,还会在多的一端表中加入一个外键,而<one-to-one>只会加载另一端数据,不会影响表结构。
分享到:
相关推荐
在Java世界中,Hibernate是一个非常重要的对象关系映射(ORM)框架,它允许开发者将数据库操作转换为对Java对象的操作,极大地简化了数据库编程。SSH是Spring、Struts和Hibernate三个开源框架的简称,常被用于构建...
- `<one-to-one>`、`<many-to-one>`:用于映射一对一或多对一关系。 通过`hibernate.cfg.xml`中的`<mapping>`节点引用`*.hbm.xml`文件,Hibernate能够在启动时自动加载这些映射信息,从而建立起实体类与数据库表的...
本文将更加深入地解析另一种重要的配置文件——`*.hbm.xml`,特别是如何通过此类文件来管理实体与数据库表之间的映射关系,以及处理复杂的关联关系,如一对一、一对多、多对一和多对多。 #### `*.hbm.xml`文件解析 ...
一对一映射通常用于两个实体类之间存在唯一对应关系的情况。可以使用`@OneToOne`注解或在XML文件中定义`one-to-one`元素来实现。 **四、一对多(One-to-Many)映射** 在实体类中,使用`@OneToMany`注解或者在XML中...
Hibernate支持多种对象关系映射,如一对一、一对多、多对一、多对多等。例如,如果你有一个`User`类和一个`Address`类,可以这样定义它们的关系: ```java @Entity @Table(name = "users") public class User { @...
### Hibernate的映射、三态、脏数据、Session缓存详解 #### 一、Hibernate映射 **Hibernate映射**是Hibernate框架的核心功能之一,它实现了Java对象与数据库表之间的映射关系。通过这种方式,开发人员可以使用面向...
3. 关系映射:一对一、一对多、多对一、多对多等关联关系。 四、查询语言(HQL)与Criteria API 1. HQL:Hibernate Query Language,面向对象的查询语言,类似于SQL,但操作的是对象而非表。 2. Criteria API:提供...
**hibernate_esb配置详解** 在Java企业级开发中,Hibernate作为一个强大的对象关系映射(ORM)框架,被广泛用于简化数据库操作。而ESB(Enterprise Service Bus,企业服务总线)则作为企业集成的核心组件,负责不同...
有四种关联类型:一对一(OneToOne)、一对多(OneToMany)、多对一(ManyToOne)和多对多(ManyToMany)。通过注解如@OneToOne、@OneToMany、@ManyToOne、@ManyToMany进行关联映射。 三、Hibernate的优势 1. 面向...
14. MyBatis的一对一和一对多实现: 包括注解方式和XML配置方式,涉及单向和双向关联,需要正确设置外键和关联属性。 15. 延迟加载: MyBatis默认不支持延迟加载,但可以通过启用二级缓存和配置`...
- **一对一映射**:通过主键关联实现。 - **一对多映射**:通过外键或集合方式实现。 - **多对多映射**:通过中间表实现。 - **单表继承**:所有子类共享一张表。 - **多表继承**:每个子类对应一张表。 - **表每类...
“Hibernate高级特性”章节则进一步探讨了XDoclet与Hibernate映射、数据检索(包括CriteriaQuery和HQL)、数据关联(如一对一、一对多、多对多关系处理)、数据访问(PO和VO的使用)、事务管理、锁机制、分页、缓存...
了解了基本概念后,可以深入研究Hibernate的高级特性,如一对多、多对一、一对一和多对多的关联映射,级联操作,延迟加载,缓存机制,以及HQL(Hibernate Query Language)和Criteria API等。 总结,Hibernate通过...
《 ACCP Hibernate 在线拍卖系统详解 》 在IT行业中,构建在线拍卖系统是一项复杂的任务,涉及到诸多技术栈的综合运用。本系统的核心是使用ACC(北大青鸟ACCP)课程中的编程技术和Hibernate这一强大的对象关系映射...
3. 实体类与映射文件:详解如何创建Java实体类,以及编写对应的Hibernate映射文件(`.hbm.xml`),实现对象与表的映射。 4. Session与Transaction:介绍Session作为Hibernate的主要工作单元,用于执行数据库操作,...
- **一对一主键关联映射加载测试**:演示如何加载具有主键关联的一对一关系的数据。 - **一对一主键关联映射总结**:总结一对一主键关联的特点及其应用场景。 #### 一对一唯一外键关联映射_单向(one-to-one) - *...