示例:一个人(person) 住一个地址(address),一个地址有一个人。
public class Person { private Integer id; private String name; private Address address; //getter and setter }
public class Address { private Integer id; private String detail; private Person person; //getter and setter }
用XML映射
<hibernate-mapping package="org.monday.hibernate4.domain"> <class name="Person" table="tbl_person"> <id name="id"> <generator class="identity" /> </id> <property name="name" /> <many-to-one name="address" class="Address" column="address_id" unique="true"/> </class> </hibernate-mapping>
<hibernate-mapping package="org.monday.hibernate4.domain"> <class name="Address" table="tbl_address"> <id name="id"> <generator class="identity"/> </id> <property name="detail" /> <one-to-one name="person" class="Person" property-ref="address" /> </class> </hibernate-mapping>
1、 tbl_address 表中使用外键来完成一对一关联,限制多方最多只能有一条记录参考到一方,
这是多对一的一个特列。所以设置 <many-to-one> 的 unique 的属性为 true 。
2、 <one-to-one> 的 property-ref 属性 指定引用关联类的属性。
用@Annotation映射
@Entity @Table(name = "tbl_person") public class Person { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id; private String name; @OneToOne @JoinColumn(name = "address_id", unique = true) private Address address; // getter and setter }
@Entity @Table(name = "tbl_address") public class Address { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id; private String detail; @OneToOne(mappedBy = "address") private Person person; // getter and setter }
测试代码
Person person = new Person(); person.setName("monday"); Address address = new Address(); address.setDetail("shanghai"); person.setAddress(address); address.setPerson(person); session.save(person); session.save(address);
SQL schema
Hibernate: alter table tbl_person drop foreign key FKACCC46F65DCD05A8 Hibernate: drop table if exists tbl_address Hibernate: drop table if exists tbl_person Hibernate: create table tbl_address ( id integer not null auto_increment, detail varchar(255), primary key (id) ) Hibernate: create table tbl_person ( id integer not null auto_increment, name varchar(255), address_id integer unique, primary key (id) ) Hibernate: alter table tbl_person add index FKACCC46F65DCD05A8 (address_id), add constraint FKACCC46F65DCD05A8 foreign key (address_id) references tbl_address (id) Hibernate: insert into tbl_person (name, address_id) values (?, ?) Hibernate: insert into tbl_address (detail) values (?) Hibernate: update tbl_person set name=?, address_id=? where id=?
这里多了一条update语句,是因为插入顺序决定的。
若这样
session.save(address); session.save(person);
就不会有update语句了。
相关推荐
在Java的持久化框架Hibernate中,一对一(One-to-One)关联映射是常见的...以上就是关于Hibernate一对一唯一外键关联映射(单向关联)的详细说明。通过这种方式,我们可以轻松地在Java应用中处理数据库的一对一关系。
在本案例中,我们将详细探讨“hibernate一对一唯一外键关联映射(单项关联)”。 首先,一对一关联分为两种类型:单向关联和双向关联。单向关联意味着在一个实体类中存在对另一实体的引用,而另一实体类中没有相应...
一、Hibernate一对一关联类型 一对一关联在现实世界中很常见,例如一个人只有一个身份证,一个身份证也只能属于一个人。在数据库设计中,这种关系通常通过主键和外键的方式实现,其中一方的主键作为另一方的外键,...
在本文中,我们将详细介绍Hibernate一对一唯一外键关联映射的概念、配置方法和实践应用。 一对一唯一外键关联映射的概念 在Hibernate中,一对一唯一外键关联映射是指两个实体之间的关联关系,其中一个实体作为外键...
本篇主要探讨的是Hibernate中的一对一(OneToOne)关系映射,特别是唯一外键关联(UniDirectional and Bidirectional Association)的情况。我们将深入理解这种关联方式的配置、实现以及它在实际应用中的价值。 1. ...
本篇将深入探讨Hibernate中的一对一唯一外键关联映射,特别是双向关联的实现。 ### 1. 一对一关联概述 一对一关联意味着一个实体只能与另一个实体的单一实例相关联,这种关系通常出现在两个表之间,其中一个表的...
总结,主键关联和唯一外键关联都是Hibernate实现一对一映射的有效方式,各有优缺点。开发者应根据具体业务需求和数据模型,选择合适的关联策略。理解并熟练运用这些关联映射,对于提升Java后端开发的效率和代码质量...
在Hibernate中,实现一对一外键关系有几种方式,包括使用主键关联(Primary Key Association)和使用外键关联(Foreign Key Association)。我们首先来看主键关联: 1. **主键关联**:在这种模式下,一方实体的主键...
在本教程中,我们将深入探讨Hibernate中的一个关键概念——关系映射,特别是“一对一”双向外键关联。这种关联类型在数据库设计中很常见,尤其是在处理具有紧密耦合的实体时。Hibernate作为Java中广泛使用的对象关系...
**标题:Hibernate一对一外键映射** 在关系型数据库中,一对一(One-to-One)关联是一种常见的关系,它表示两个实体之间存在着唯一的关系。Hibernate,作为Java领域中的一个流行的ORM(对象关系映射)框架,提供了...
2. **一对一映射**:使用@OneToOne注解来声明一对一关系。可以设置 mappedBy 属性来指定关联的反向引用字段。 3. **外键实现**:在一对一关系中,外键可以放在任一实体的表中。若外键在从表,称为单向一对一关联;...
下面我们将详细讲解如何在Hibernate中进行一对一映射的配置。 **一、XML文件配置** 1. **主键关联(Primary Key Join)** 主键关联是最简单的一对一映射方式,两个实体类共享同一个主键。在XML配置文件中,我们...
在Java的持久化框架Hibernate中,一对一(One-to-One)关联是对象关系映射(ORM)中的一个重要概念,用于表示两个实体之间一对一的关系。在这个场景下,我们将讨论一种特殊的一对一关联方式——唯一外键关联(Single...
单向一对一映射通常涉及一个实体持有另一个实体的引用,而双向一对一映射则意味着两个实体都可以互相引用。这种关联关系在数据库层面通常通过主键外键约束来实现,但在代码层面则通过注解来表达。 首先,我们需要...
在Java的持久化框架...总之,一对一唯一外键双向关联在Hibernate中提供了强大的对象关系映射能力,但需要谨慎处理,以防止潜在的问题。理解并正确配置这种关联关系对于提升Java应用程序的持久化层设计至关重要。
以上就是关于Hibernate外键实现一对一单向关联关系的详细说明。这个知识点涉及到数据库设计、ORM框架的使用,以及Java编程实践,对于理解和使用Hibernate进行数据库操作具有重要意义。在实践中,应结合具体业务场景...
在本案例中,我们将探讨如何在Hibernate中实现基于外键的双向一对一关联映射。 首先,我们来看一下双向一对一关联的基本概念。双向一对一关联意味着两个实体类A和B,它们之间存在一对一的关系,并且A能访问B,B也能...