`

5.Hibernate的一对一唯一外键关联映射

阅读更多

 一对一唯一外键关联映射实际上是多对一关联映射的特例。

 

可以采用many-to-one标签,指定多的一端的unique=true,这样就限制了多的一端的多重性唯一。

通过这种手段映射一对一唯一外键关联。

<many-to-one name="idCard"  unique= "true" />

 

一对一唯一外键关联双向,需要在另一端(idCard),添加<one-to-one>标签,指示hibernate如何加载其关联对象,默认根据主键加载,外键关联映射中,因为两个实体采用的是person外键维护的关系,所以不能指定主键加载person,而要根据person的外键加载,所以采用如下映射方式:

<one-to-one name="person" property-ref="idCard">

 

一:实体类:

package com.tao.hibernate.one2one2;

public class IdCard2 {
	private Integer id;
	private String cardNo;
	private Person2 person;

	public IdCard2() {
		super();
	}

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getCardNo() {
		return cardNo;
	}

	public void setCardNo(String cardNo) {
		this.cardNo = cardNo;
	}

	public Person2 getPerson() {
		return person;
	}

	public void setPerson(Person2 person) {
		this.person = person;
	}

}
 
package com.tao.hibernate.one2one2;


public class Person2 {
	private Integer id;
	private String name;
	private IdCard2 idCard;

	public Person2() {
		super();
	}

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public IdCard2 getIdCard() {
		return idCard;
	}

	public void setIdCard(IdCard2 idCard2) {
		this.idCard = idCard2;
	}

}
 

二:映射文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="com.tao.hibernate.one2one2">
	<class name="IdCard2" table="t_IdCard2">
		<id name="id" column="id" type="integer">
			<generator class="native" />
		</id>
		<property name="cardNo" column="cardNo" />
		<one-to-one name="person" property-ref="idCard" />
	</class>
</hibernate-mapping>
 
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="com.tao.hibernate.one2one2">
	<class name="Person2" table="t_Person2">
		<id name="id" column="id" type="integer">
			<generator class="native">
			</generator>
		</id>
		<property name="name" column="name" />
		<many-to-one name="idCard" unique="true"/>
	</class>
</hibernate-mapping>
 

三:测试类:

package com.tao.hibernate.one2one2;

import org.hibernate.Session;
import org.hibernate.Transaction;
import org.junit.Test;

import com.tao.hibernate.HibernateUtils;

public class TestMain {

	@Test
	public void testSave() {
		Session session = HibernateUtils.getFactory().openSession();

		IdCard2 idCard = new IdCard2();
		idCard.setCardNo("100");

		Person2 person = new Person2();
		person.setName("Tao");
		person.setIdCard(idCard);

		Transaction ts = session.beginTransaction();
		ts.begin();
		session.save(idCard);
		session.save(person);
		ts.commit();
	}

	@Test
	public void testLoad() {
		Session session = HibernateUtils.getFactory().openSession();
		Person2 person = (Person2) session.load(Person2.class, 1);
		//System.out.println(person.getName());
		System.out.println(person.getIdCard().getCardNo());
	}

	@Test
	public void testLoad2() {
		Session session = HibernateUtils.getFactory().openSession();
		IdCard2 idCard = (IdCard2) session.load(IdCard2.class, 1);
		System.out.println(idCard.getCardNo());
		System.out.println(idCard.getPerson().getName());
	}

}
分享到:
评论

相关推荐

    hibernate一对一之唯一外键关联(双向关联)

    本篇主要探讨的是Hibernate中的一对一(OneToOne)关系映射,特别是唯一外键关联(UniDirectional and Bidirectional Association)的情况。我们将深入理解这种关联方式的配置、实现以及它在实际应用中的价值。 1. ...

    Hibernate一对一唯一外键关联映射(单向关联)

    Hibernate一对一关联概述 一对一关联分为两种类型:共享主键关联(Primary Key Join)和唯一外键关联(Unique Foreign Key Join)。在本例中,我们讨论的是后者,即通过一个独立的外键字段在两个表之间建立一对一...

    Hibernate一对一唯一外键关联映射(双向关联)

    一、Hibernate一对一关联类型 一对一关联在现实世界中很常见,例如一个人只有一个身份证,一个身份证也只能属于一个人。在数据库设计中,这种关系通常通过主键和外键的方式实现,其中一方的主键作为另一方的外键,...

    hibernate one-to-one 一对一唯一外键关联映射_单向 and 双向

    在本文中,我们将详细介绍Hibernate一对一唯一外键关联映射的概念、配置方法和实践应用。 一对一唯一外键关联映射的概念 在Hibernate中,一对一唯一外键关联映射是指两个实体之间的关联关系,其中一个实体作为外键...

    hibernate一对一唯一外键关联映射(单项关联)

    在本案例中,我们将详细探讨“hibernate一对一唯一外键关联映射(单项关联)”。 首先,一对一关联分为两种类型:单向关联和双向关联。单向关联意味着在一个实体类中存在对另一实体的引用,而另一实体类中没有相应...

    hibernate一对一之唯一外键关联(单向关联)

    总的来说,Hibernate的一对一唯一外键关联(单向关联)是通过在一方实体中定义另一方实体的引用,并通过注解或XML映射文件进行配置来实现的。这种关联方式简化了对象关系的管理,但同时也需要开发者在操作关联对象时...

    hibernate一对一唯一外键关联映射(双向关联)

    本篇将深入探讨Hibernate中的一对一唯一外键关联映射,特别是双向关联的实现。 ### 1. 一对一关联概述 一对一关联意味着一个实体只能与另一个实体的单一实例相关联,这种关系通常出现在两个表之间,其中一个表的...

    Hibernate 一对一关联映射(主键关联VS唯一外键关联)

    总结,主键关联和唯一外键关联都是Hibernate实现一对一映射的有效方式,各有优缺点。开发者应根据具体业务需求和数据模型,选择合适的关联策略。理解并熟练运用这些关联映射,对于提升Java后端开发的效率和代码质量...

    Hibernate ORM - 一对一外键关联关系

    1. **一对一外键关联配置**:在Hibernate中,可以通过在映射文件中添加`&lt;one-to-one&gt;`标签或在实体类上使用`@OneToOne`注解来定义一对一关联。关联的外键通常位于被引用的实体(“一对一”关系的“一”端)中。 2. ...

    Hibernate一对一单向外键关联 (联合主键annotation)

    在Java的持久化框架Hibernate中,一对一(One-to-One)关联是常见的关系映射类型,它用于表示两个实体之间存在唯一的对应关系。本篇将详细讲解如何使用Hibernate进行一对一单向外键关联,并且该关联涉及到联合主键的...

    Hibernate关联映射-one to one单向外键关联

    本话题主要探讨的是Hibernate中的一种关联映射方式——一对一(One-to-One)单向外键关联。这种关联模式通常用于两个实体之间存在唯一对应的关系,例如一个用户对应一个唯一的账户。 在Hibernate中,一对一关联可以...

    Hibernate教程05_关系映射之一对一双向外键关联

    在本教程中,我们将深入探讨Hibernate中的一个关键概念——关系映射,特别是“一对一”双向外键关联。这种关联类型在数据库设计中很常见,尤其是在处理具有紧密耦合的实体时。Hibernate作为Java中广泛使用的对象关系...

    Hibernate教程04_关系映射之一对一单向外键关联

    **标题详解:**“Hibernate教程04_关系映射之一对一单向外键关联” 在Hibernate框架中,关系映射是数据库表之间的关联在对象模型中的体现。本教程重点讲解了一对一(One-to-One)单向外键关联的实现方法。在数据库...

    hibernate 双向一对一基于外键的关联映射

    在本案例中,我们将探讨如何在Hibernate中实现基于外键的双向一对一关联映射。 首先,我们来看一下双向一对一关联的基本概念。双向一对一关联意味着两个实体类A和B,它们之间存在一对一的关系,并且A能访问B,B也能...

    hibernate中的 一对一唯一外键双向关联

    在Java的持久化框架Hibernate中,一对一(One-to-One)关系是对象之间的关联类型之一,它代表了两个实体之间存在唯一的映射关系。在这种关系中,一个实体对应另一个实体的唯一实例。本篇将深入探讨在Hibernate中实现...

    Hibernate一对一外键映射

    **标题:Hibernate一对一外键映射** 在关系型数据库中,一对一(One-to-One)关联是一种常见的关系,它表示两个实体之间存在着唯一的关系。Hibernate,作为Java领域中的一个流行的ORM(对象关系映射)框架,提供了...

Global site tag (gtag.js) - Google Analytics