`

hibernate 关联映射(二) one to one(单向)

阅读更多

昨天学习了一对一的单向映射,在这里回顾一下。

 

首先明确一对一的关联关系正如人和身份证直接的关系一样,一个人只能对应一张身份证;在这里只是从人能看到他的身份证,也就是单向映射。

所以就写了两个实体类,一个是person,另外一个就是IdCard。

person.java文件:

package com.mp.hibernate;

public class Person {
	
	private int id;
	
	private String name;

	private IdCard idCard;
	
	public int getId() {
		return id;
	}

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

	public String getName() {
		return name;
	}

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

	public IdCard getIdCard() {
		return idCard;
	}

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

 

 

IdCard.java文件:

package com.mp.hibernate;

public class IdCard {
	
	private int id;
	
	private String cardNo;

	public int getId() {
		return id;
	}

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

	public String getCardNo() {
		return cardNo;
	}

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

 

 

配置文件:

Person.hbm.xml文件

<?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>
	<class name="com.mp.hibernate.Person" table="t_person">
		<id name="id">
			<generator class="foreign">
				<param name="property">idCard</param>
			</generator>
		</id>
		<property name="name"></property>
		<one-to-one name="idCard" constrained="true"></one-to-one>
	</class>

</hibernate-mapping>

 

 其中

<id name="id">
     <generator class="foreign">
          <param name="property">idCard</param>
     </generator>
</id>

这段完成的是person与Idcard的主键id的关联,当生成一个person时,id从idcard中寻找。

 

<one-to-one name="idCard" constrained="true"></one-to-one>

<one-to-one>这个标签找的就是一对一关联的对象,里面的constrained设置为true就是 在生成sql语句的时候添加主键约束

 

写的测试类:

package com.mp.hibernate;

import org.hibernate.Session;

import junit.framework.TestCase;

public class One2OneTest extends TestCase {
	public void testSave1() {
		Session session = null;
		try {
			session = HibernateUtils.getSession();
			session.beginTransaction();
			
			IdCard idCard = new IdCard();
			idCard.setCardNo("234589389894893384");
			
			Person person = new Person();
			person.setName("刘德华");
			person.setIdCard(idCard);
			
			//不会出现TransientObejectException异常
			//因为一对一主键关联映射中,默认了cascade属性
			session.save(person);
			
			session.getTransaction().commit();
		} catch (Exception e) {
			e.printStackTrace();
			session.getTransaction().rollback();
		} finally {
			HibernateUtils.closeSession(session);
		}
	}
	
	public void testLoad() {
		Session session = null;
		try {
			session = HibernateUtils.getSession();
			session.beginTransaction();
			
			Person person = (Person)session.load(Person.class, 1);
			
			System.out.println("person.name=" + person.getName());
			System.out.println("idcard.cardNo" + person.getIdCard().getCardNo());
			
			session.getTransaction().commit();
		} catch (Exception e) {
			e.printStackTrace();
			session.getTransaction().rollback();
		} finally {
			HibernateUtils.closeSession(session);
		}
	}
}

 

工程文件包含在附件中

 

0
0
分享到:
评论

相关推荐

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

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

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

    在Hibernate中,一对一唯一外键关联映射可以通过 `&lt;many-to-one&gt;` 标签来配置。例如,以下是Person实体与IdCard实体的一对一唯一外键关联映射配置: ```xml &lt;many-to-one name="idCard" column="card_id...

    Hibernate关联映射

    在 Hibernate 映射中,需要使用 `one-to-one` 元素,并设置 `constrained="true"`,表明该类的主键由关联类生成。 3. Hibernate 一对一连接表单向关联: 这种关联方式是通过额外的连接表来实现一对一关系的。连接...

    hibernate 关联映射(三) one to one(双向)

    本篇将深入探讨一种特殊的关联映射方式——一对一(One to One)映射,特别是在双向关联的情况下的实现。在这个案例中,我们将详细解析`hibernate_one2onepk2`的压缩包文件,了解如何设置和操作这种关联。 一对一...

    hibernate 全面学习->hibernate 关联映射学习

    本文将深入探讨Hibernate的关联映射学习,包括一对多、多对一、一对一等多种关系映射的方式。 首先,我们来看一下“一对多”(One-to-Many)的映射关系。在Hibernate中,这种关系通常用在一个实体可以拥有多个子...

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

    在Java的持久化框架Hibernate中,一对一(One-to-One)关联映射是常见的关系映射方式之一,尤其在处理两个实体之间存在唯一对应关系时非常有用。本篇将重点讲解如何实现一对一主键关联映射的单向关联,并通过一个...

    hibernate的关联映射

    【hibernate关联映射详解】 Hibernate 是一款流行的Java持久层框架,用于简化数据库操作。在Hibernate中,关联映射是实现对象关系映射(ORM)的关键,它允许我们在对象模型和关系数据库之间建立联系。关联映射主要...

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

    在Java的持久化框架Hibernate中,一对一(One-to-One)关联映射是常见的关系数据库模型在对象模型中的体现。这种关联通常用于表示两个实体之间非常特殊的联系,比如一个人只有一个身份证,或者一个公司只有一个总部...

    Hibernate一对多单向关联映射

    本篇主要探讨的是如何在Hibernate中实现一对多的单向关联映射。 一、概念理解 一对多关联意味着一个实体(如部门)可以有多个关联实体(如员工),而反过来,每个员工只属于一个部门。单向关联则表示只有部门知道其...

    Hibernate关联映射.doc

    ### Hibernate关联映射详解 #### 一、单向多对一映射 在单向多对一的关系中,主要是指“多方”实体依赖于“一方”实体,但是“一方”实体并不感知到“多方”的存在。 1. **数据库设计:**在多方的表中添加与一方...

    Hibernate关联关系映射目录

    ### Hibernate关联关系映射 #### 一、单向关联 单向关联指的是对象之间的关联关系只在一个方向上存在,也就是说这种关联关系仅在一个类中表示出来,在另一个类中不体现这种关联。 ##### 1. 一对一外键单向关联 ...

    hibernate关联映射

    hibernate关联映射是Hibernate框架中的一个重要概念,它用于在Java对象模型和数据库表之间建立关系,使得数据操作更加方便。以下将详细介绍各种类型的关联映射: 1. **单向N-1关联(无连接表)** 在这种关联中,一...

    Hibernate单向关联代码示例

    在Java的持久化框架Hibernate中,关联映射是数据库对象之间关系的一种体现,它使得ORM(对象关系映射)更加灵活。"Hibernate单向关联代码示例"是一个实用的学习资源,帮助开发者理解如何在实际项目中实现单向关联。...

    hibernate的关联关系映射

    单向关联意味着只从一个方向访问关联对象,例如,只需要从Course对象获取任教的Teacher对象,那么只需在Course.hbm.xml中添加`&lt;many-to-one&gt;`标签,指定Teacher类和column属性(teacher_id)。如果需要从Teacher对象...

Global site tag (gtag.js) - Google Analytics