`
Wind_ZhongGang
  • 浏览: 264134 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Hibernate ORM One to One

阅读更多

  讨论下Hibernate中的一对一映射。

 

  首先来了解一下一对一的单向关联映射,以Person与IDCard为例,一个人只能拥一张身份证,而一张身份证只能属于一个人,并且从Person的角度讲,需要知道拥有的是哪张IDCard,而从IDCard来讲,则没有这方面的需求。当然需求也不是死的,这里也只是举例而已,不必较真。

  1.Person.java

 

package com.template.model;

/**
 * Created by IntelliJ IDEA.
 * User: Zhong Gang
 * Date: 11-7-20
 * Time: 下午8:13
 * To change this template use File | Settings | File Templates.
 */
public class Person {
    private Integer id;
    private String name;

    private IDCard card;

    public Person() {
    }
}

 

  2.IDCard.java

 

package com.template.model;

/**
 * Created by IntelliJ IDEA.
 * User: Zhong Gang
 * Date: 11-7-20
 * Time: 下午8:13
 * To change this template use File | Settings | File Templates.
 */
public class IDCard {
    private Integer id;
    private String number;

    public IDCard() {
    }
}

 

 

  3.Person.hbm.xml

 

<?xml version="1.0"?>

<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping default-access="field">

    <class name="com.template.model.Person" table="person">
        <id name="id" column="id" type="java.lang.Integer">
            <generator class="native"/>
        </id>
        <property name="name" column="name" type="java.lang.String"/>
        <many-to-one name="card" class="com.template.model.IDCard" column="cardid" unique="true"/>
    </class>

</hibernate-mapping>

 

 

  4.IDCard.hbm.xml

 

<?xml version="1.0"?>

<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping default-access="field">

    <class name="com.template.model.IDCard" table="idcard">
        <id name="id" column="id" type="java.lang.Integer">
            <generator class="native"/>
        </id>
        <property name="number" column="number" type="java.lang.String"/>
    </class>

</hibernate-mapping>

  这里的设置是让person表来维护这个一对一的关系,并且主键的生成方式是交给数据库来完成的,特别需要注意的一点是如果主键的生成方式是native,那么如果你是在Mysql数据库中创建表的话,记得在id字段后加上AUTO_INCREMENT,否则会报错。至于其他的数据库,因为还没有研究,所以还不知道,如果那么高手知道请留言,谢谢。

 

 依就以上例,如果想建立一个一对一的双向关联,那么Person.java和Person.hbm.xml文件不需要修改,只需要依次修改IDCard.java和IDCard.hbm.xml文件。以下是修改后的文件。

 

  5.IDCard.java

 

package com.template.model;

/**
 * Created by IntelliJ IDEA.
 * User: Zhong Gang
 * Date: 11-7-20
 * Time: 下午8:13
 * To change this template use File | Settings | File Templates.
 */
public class IDCard {
    private Integer id;
    private String number;

    private Person person;

    public IDCard() {
    }
}

 

 

  6.IDCard.hbm.xml

 

 

<?xml version="1.0"?>

<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping default-access="field">

    <class name="com.template.model.IDCard" table="idcard">
        <id name="id" column="id" type="java.lang.Integer">
            <generator class="native"/>
        </id>
        <property name="number" column="number" type="java.lang.String"/>
        
        <one-to-one name="person" class="com.template.model.Person"/>
    </class>

</hibernate-mapping>

 

  在这里就不写出hbm文件对应的sql语句了,相信从映射文件里你应该能够想到sql怎么写了吧。可以看出在person表里用了cardid这个字段来维护Person和IDCard这两个对象的关系。

 

 

2
2
分享到:
评论

相关推荐

    Hibernate ORM - 一对一连接表关联关系

    "HibernateORM"这个文件名可能是包含示例代码、配置文件或教程文档的压缩包,可能包含以下内容: 1. Java实体类文件,展示了如何使用注解声明一对一关联。 2. Hibernate配置文件,显示了数据库连接和映射配置。 3. ...

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

    在Hibernate的配置文件中,可以使用`&lt;one-to-one&gt;`标签来定义一对一关系,如下: ```xml &lt;one-to-one name="profile" class="Profile" cascade="all"/&gt; &lt;param name="property"&gt;user ...

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

    文件名"HibernateORM"可能代表了这个压缩包包含的资源是关于Hibernate ORM的,可能有示例代码、配置文件或其他相关教程材料,用于帮助读者理解和实践一对一外键关联。 **扩展知识点:** 1. **一对一外键关联配置**...

    hibernate one to one一对一关系示例

    在Java的持久化框架Hibernate中,一对一(One-to-One)关联是对象关系映射(ORM)中的一个重要概念。这种关联关系意味着一个实体最多只能与另一个实体的实例进行关联,反之亦然。本示例将深入讲解如何在Hibernate中...

    Hibernate one to many(many to one) 配置

    标题"Hibernate one to many(many to one) 配置"涉及到的是关系型数据库在Java中的持久化框架Hibernate中的两种关联映射关系:一对一(One-to-One)和多对一(Many-to-One)。在数据库设计中,这种关系很常见,例如...

    hibernate_one_to_one映射简单入门例子

    `hibernate_one_to_one`标签表示我们将探讨的是如何在Hibernate中实现一对一的映射关系。 **二、一对一映射的两种类型** 1. **主键关联(Primary Key Join)**:两个实体共享同一个主键,这通常意味着它们是同一个...

    Hibernate应用例子one-to-one

    【Hibernate应用例子one-to-one】 Hibernate 是一个强大的Java对象关系映射(ORM)框架,它允许开发者以面向对象的方式操作数据库,从而简化了数据库应用程序的开发。在Hibernate中,"one-to-one"(一对一)关联是...

    hibernate many-to-one(多对一)及 cascade(级联).doc

    ### Hibernate Many-to-One (多对一) 及 Cascade (级联) #### 一、Many-to-One(多对一) 在数据库设计中,实体之间的关系主要包括一对一、一对多、多对多等几种类型。而在ORM(对象关系映射)框架Hibernate中,...

    hibernate学习5之one-to-many双向关联.docx

    在Hibernate框架中,双向一对多关联映射是常见的对象关系映射(ORM)方式,用于在Java对象模型中表示数据库中的两个实体之间的多对一关系。在这个场景中,"一"端通常指的是一个实体可以拥有多个另一个实体的实例,而...

    hibernate_One2One

    在Java世界中,Hibernate是一个强大的对象关系映射(ORM)框架,它允许开发者将数据库操作转化为面向对象的方式。在处理数据库中的关联时,Hibernate提供了多种映射策略,其中“一对一(One2One)”关联是一种常见的...

    Hibernate one-to-many-annotation

    在Hibernate中,`one-to-many`关系是常见的实体间关系之一,表示一个实体可以与多个其他实体相关联。本文将深入探讨`Hibernate one-to-many`注解的使用和实现细节。 ### 一、`@OneToMany`注解概述 `@OneToMany`...

    (3)Hibernate3.2 中的 one-to-one关系

    在Java的持久化框架Hibernate中,一对一(One-to-One)关联是对象关系映射(ORM)中的一个重要概念,它用于表示两个实体之间一对一的映射关系。本篇将深入探讨Hibernate 3.2中的一对一关系,以及如何在实际项目中...

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

    本篇文章将深入探讨Hibernate中的关联映射,特别是One-to-One(一对一)关联,这是一种表示两个实体之间一对一关系的映射方式。我们将通过源码分析和实际例子来理解其工作原理。 ### 一、One-to-One关联概述 在...

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

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

    Hibernate学习要点_one2one 一对一主键双线关联

    在深入探讨Hibernate中的一对一(One-to-One)主键双线关联机制之前,我们首先需要理解几个核心概念:Hibernate框架、实体关系映射以及主键关联的基本原理。Hibernate是Java平台下的一款开源对象关系映射(ORM)框架...

    Hibernate Mapping Many-to-One 实例 内附源代码及附件下载

    本实例将详细讲解如何在Hibernate中实现Many-to-One关系映射,这是一种常见的数据库关联,表示一个实体可以与多个其他实体相关联。 在Many-to-One关系中,通常一个实体(如部门)可以有多个相关实体(如员工),而...

    hibernate one-to-many 单/双向关联映射配置心得

    本文主要关注Hibernate中的一个核心概念——一对一(One-to-One)、一对多(One-to-Many)和多对一(Many-to-One)关联映射,特别是关于“一到多”单向和双向关联映射的配置心得。 首先,让我们了解“一到多”关联...

    详解Hibernate一对一映射配置

    在Java持久化框架Hibernate中,一对一(One-to-One)映射是对象关系映射的一种常见方式,用于表示两个实体之间一对一的关系。这种关系通常出现在一个实体的实例只能与另一个实体的单个实例相关联的情况。下面我们将...

    Hibernate one2one_pk_1

    具体到“Hibernate one2one_pk_1”的知识点,我们可以详细讨论如何在Hibernate中配置一对一双向关联,并且是基于主键的关联方式。下面,我们将通过具体的代码示例来解析这一过程: 首先,在实体类Person中,我们...

Global site tag (gtag.js) - Google Analytics