Hibernate一对一主键关联:
1,单向主键关联:person--------》idCard
Person的主键id作为一个外键参照idCard的主键id。键值都是一样的。
让两个实体的主键id保持相同,这样避免多余字段被创建。
Person.hbm.xml:
<hibernate-mapping>
<class
name="com.bjsxt.hibernate.Person" table="t_person">
<id
name="id">
//person的主键来源于idCard,共享idCard的主键。
<generator class="foreign">
<param
name="property">idCard</param>
</generator>
</id>
<property
name="name"/>
//指示hibernate怎么加载他的关联对象idCard,默认根据主键加载
//
constrained="true" 表示当前主键存在一个约束,Person的主键id作为一个外键参照idCard的主键id,如果去掉就不会生出外键关联约束
<one-to-one name="idCard"
constrained="true"/>
</class>
</hibernate-mapping>
IdCard.hbm.xml:
<hibernate-mapping>
<class
name="com.bjsxt.hibernate.IdCard" table="t_idcard">
<id
name="id">
<generator
class="native"/>
</id>
<property
name="cardNo"/>
</class>
</hibernate-mapping>
session.beginTransaction();
IdCard idCard = new
IdCard();
idCard.setCardNo("88888888888888");
Person person = new
Person();
person.setName("菜10");
person.setIdCard(idCard);
//没有保存idCard
//不会出现TransientObjectException异常
//因为一对一主键关联映射中,默认了cascade属性
//因为person的主键参考idCard的主键,必须先有idCard。
//只有一对一关联映射特殊
session.save(person);
session.getTransaction().commit();
2,双向主键关联:person 《--------》idCard
跟单向关联唯一不同的是:在另一端也加上one-to-one标签
<hibernate-mapping>
<class
name="com.bjsxt.hibernate.IdCard" table="t_idcard">
<id
name="id">
<generator
class="native"/>
</id>
<property
name="cardNo"/>
//指示hibernate如何加载person,默认根据主键加载
<one-to-one
name="person"/>
</class>
</hibernate-mapping>
- 大小: 22.3 KB
- 大小: 28.8 KB
分享到:
相关推荐
《Hibernate学习笔记特别详细》 Hibernate,作为一款开源的Object-Relational Mapping(ORM)框架,为Java开发者提供了强大的数据库操作支持。它简化了数据库访问的复杂性,使得开发人员可以像操作对象一样操作...
Hibernate学习笔记整理 以下是 Hibernate 框架的详细知识点: Hibernate 介绍 Hibernate 是一个 ORM(Object-Relational Mapping)框架,用于将 Java 对象映射到数据库表中。它提供了一个简洁的方式来访问和操作...
### Hibernate 学习笔记知识点概览 #### 一、Hibernate 概述 - **定义**:Hibernate 是一款开源的对象关系映射(ORM)框架,它实现了将 Java 应用程序中的对象模型映射到关系型数据库中的记录。通过 ORM 技术,...
- `<one-to-one>`、`<one-to-many>`、`<many-to-many>`:表示关联关系的映射。 #### 2.3 id的内置生成器 - **常见生成器**: - `increment`:每次生成一个递增的值。 - `identity`:由数据库自动生成唯一标识符...
### Hibernate学习笔记 #### 第一个Hibernate项目(hibernate_first) 在进行Hibernate的学习时,首先会接触到的是如何创建一个简单的Hibernate项目。以下是一些关键步骤: 1. **新建Java项目**: - 首先,在...
在本篇“我的Hibernate学习笔记(4)完”中,我们将深入探讨Hibernate这一流行的Java对象关系映射(ORM)框架,以及如何通过源码和工具进行高效开发。这篇笔记不仅包含理论知识,还提供了实际操作的指导,以帮助读者更...
在深入探讨Hibernate学习笔记第二天的源码之前,我们先来理解一下Hibernate的核心概念。Hibernate是一个开源的对象关系映射(ORM)框架,它允许Java开发者将数据库操作转化为对象模型,大大简化了数据访问层的开发...
联合主键映射涉及到多个字段共同构成主键的情况,可以使用 `<composite-id>` 标签来定义这些字段,并通过 `<key-property>` 或 `<key-many-to-one>` 子标签映射每个组成部分。 组件映射允许我们将一个类的属性映射...
【Java相关课程系列笔记之十四Hibernate学习笔记】 Hibernate是一个开源的对象关系映射(ORM)框架,它极大地简化了Java应用程序对数据库的操作。本笔记将详细阐述Hibernate的核心概念、使用方法和特性。 一、...
### Hibernate学习笔记小结 #### 一、简介与配置 **Hibernate** 是一款开源的对象关系映射(ORM)框架,它允许开发人员将Java对象自动持久化到数据库表中,从而简化了数据访问层的开发工作。在Spring框架中,...
### 马士兵 Hibernate 学习笔记概览 #### 一、Hello World 示例 - **简介**:通过简单的示例程序来快速入门 Hibernate 框架。 - **步骤**: 1. 创建 Java 项目 `hibernate_0100_HelloWorld`。 2. 构建 User-...
**Hibernate学习笔记与总结** Hibernate 是一款开源的对象关系映射(ORM)框架,它为Java开发者提供了一种在关系数据库上操作对象数据的便捷方式。本文将深入探讨Hibernate的核心概念、配置、实体类、映射文件、...
### hibernate-note学习笔记知识点详解 #### 一、对象持久化 **1.1 概述** 对象持久化是指将程序中的对象状态保存到非易失性存储中(如硬盘或磁盘等),以便在系统重启后仍能保留这些状态。这种技术常用于将对象的...