1.按照外键映射(Hibernate提供了两种映射一对一关联关系的方式:按照外键映射和按照主键映射)

实现需要:

创建实体类Users1和Resume1

public class Users1 {

private Integer userid;

private String username;

private String userpass;

private Resume1 resume1;

}

***********

public class Resume1 {

private Integer resid;

private String resname;

private String rescardno;

private Users1 users1;

}

-----------------------

配置文件Users1.hbm.xml和Resume1.hbm.xml:

Users1.hbm.xml

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE hibernate-mapping PUBLIC

"-//Hibernate/Hibernate Mapping DTD 3.0//EN"

"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="cn.happy.onetoone_fk">

<class name="Users1" table="USERS1">

<id name="userid" column="USERID" >

<generator class="native"></generator>

</id>

<property name="username" column="USERNAME" type="string"></property>

<property name="userpass" column="USERPASS" type="string"></property>

<one-to-one name="resume1" class="Resume1" property-ref="users1"></one-to-one>

</class>

</hibernate-mapping>

*********************

Resume1.hbm.xml

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE hibernate-mapping PUBLIC

"-//Hibernate/Hibernate Mapping DTD 3.0//EN"

"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="cn.happy.onetoone_fk">

<class name="Resume1" table="RESUME1">

<id name="resid" column="RESID" >

<generator class="native"></generator>

</id>

<property name="resname" column="RESNAME" type="string"></property>

<property name="rescardno" column="RESCARDNO" type="string"></property>

<many-to-one name="users1" class="Users1" cascade="all" column="RESUSERID" unique="true"></many-to-one>

</class>

</hibernate-mapping>

------------------------------------

2.主键映射

实现需要:

创建实体类Users2和Resume2

public class Users2 {

private Integer userid;

private String username;

private String userpass;

private Resume2 resume2;

}

*******************:

public class Resume2 {

private Integer resid;

private String resname;

private String rescardno;

private Users2 users2;

}

----------------------------

配置文件Users1.hbm.xml和Resume1.hbm.xml

Users1.hbm.xml

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE hibernate-mapping PUBLIC

"-//Hibernate/Hibernate Mapping DTD 3.0//EN"

"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="cn.happy.onetoone_pk">

<class name="Users2" table="USERS2">

<id name="userid" column="USERID" >

<generator class="foreign">

<param name="property">resume2</param>

</generator>

</id>

<property name="username" column="USERNAME" type="string"></property>

<property name="userpass" column="USERPASS" type="string"></property>

<one-to-one name="resume2" class="Resume2" constrained="true"></one-to-one>

</class>

</hibernate-mapping>

************************

Resume2.hbm.xml

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="cn.happy.onetoone_pk">

<class name="Resume2" table="RESUME2">

<id column="RESID" name="resid">

<generator class="native"/>

</id>

<property column="RESNAME" name="resname" type="string"/>

<property column="RESCARDNO" name="rescardno" type="string"/>

<one-to-one  name="users2" cascade="all" class="Users2"/>

</class>

</hibernate-mapping>

==========================================

一  。组件映射(建立关系数据模型的一个重要原则是在不会导致数据冗余的前提下,尽可能减少数据库表的数目及表之间的外键参照关系)

实现需求:

创建EmpHomeAddress和EmpInfo

public class EmpHomeAddress {

private String ehomestreet;

private String ehomecity;

private String ehomeprovince;

private String ehomezipcode;

private EmpInfo empinfo;

}

--------------

public class EmpInfo {

private Integer eid;

private String ename;

private EmpHomeAddress ehome;

}

*************************

创建配置文件EmpInfo.hbm.xml

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE hibernate-mapping PUBLIC

"-//Hibernate/Hibernate Mapping DTD 3.0//EN"

"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="cn.happy.component">

<class name="EmpInfo" table="EMPINFO">

<id name="eid" column="EID">

<generator class="native"></generator>

</id>

<property name="ename" column="ENAME" type="string"></property>

<component name="ehome" class="EmpHomeAddress">

<parent name="empinfo"/>

<property name="ehomestreet" column="EHOMESTREET" type="string"></property>

<property name="ehomecity" column="EHOMECITY" type="string"></property>

<property name="ehomeprovince" column="EHOMEPROVINCE" type="string"></property>

<property name="ehomezipcode" column="EHOMEZIPCODE" type="string"></property>

</component>

</class>

</hibernate-mapping>

.Hibernate一对一映射与组件映射的更多相关文章

  1. Hibernate征途(五)之继承映射和组件映射

    之所以把这两种映射放到一起说,是因为二者都是以复用为目的,减少了代码和配置量,这是相同点:二者之间的不同点类似继承和实现的区别:继承的类是一个事物的抽象,而实现的接口仅仅是功能的抽象. 继承映射 如上 ...

  2. Hibernate第九篇【组件映射、继承映射】

    前言 到目前位置,我们已经学习了一对一.一对多.多对一.多对多映射了-既然Hibernate是ORM实现的框架,它还提供了组件映射和继承映射..本博文主要讲解组件映射和继承映射 Java主要的类主要有 ...

  3. hibernate(七)组件映射与多对一映射

    一.组件映射 用注解配置组件映射: Husband为我们映射的类,wife是这个类的一部分(属性不能与husband中属性重名,不要写Entity注解,不要有主键) Husband类:(在getWif ...

  4. Hibernate组件映射

    Hibernate联合主键映射以及组件映射 在Hibernate中联合主键的形成有两种可能:一种是由多对多映射形成的,多对多映射会形成第三张表,一般来说第三张表的主键是由其他两张表的主键构成的(比如学 ...

  5. java之hibernate之组件映射

    1.在开发中,有的类信息比较复杂,而且某几个信息可以组成某一个部分,这个时候可以采用组件映射,组件映射是一张表映射到多个类.表结构 2.类的设计 Link.java public class Link ...

  6. Hibernate征途(七)之复合主键映射和集合映射

    把这两种映射放到一起说,是因为这两种映射不像前面的复用型映射.数量和方向型映射那么分类鲜明,所以放到了这个“其他”里面. 复合主键映射 在关系模型中,复合主键和其他的主键方式没有很大区别,但是反映到对 ...

  7. hibernate学习四(关系映射一对一与组件映射)

    一.关系映射简介 在数据库中,表与表的关系,仅有外键.但使用hibernate后,为面向对象的编程,对象与对象的关系多样化:如 一对一,一对多,多对多,并具有单向和双向之分. 开始练习前,复制上一次项 ...

  8. Hibernate中一对一关联映射/组件映射

    Hibernate映射:一对一关联 1.按照外键映射 2.按照主键映射 组件映射 下面以员工账号表和员工档案表(员工账号和档案表之间是一对一的关系)为例,介绍这两种映射关系,并使用这两种 映射方式分别 ...

  9. Hibernate中的一对一关联和组件的映射

    Hibernate提供了两种映射一对一映射关联关系的方式: 01.按照外键映射 02.按照主键映射 下面以员工账号表和员工档案表(员工账号和档案表之间是一对一的关系)为例,介绍这两种映射关系,并使用这 ...

随机推荐

  1. 通知(Notification)的使用

    新建一个 NotificationTest项目,并修改 activity_main.xml 中的代码,如下所示:<LinearLayout xmlns:android="http:// ...

  2. Linux命令--用户用户组管理

    新增用户组 : groupadd groupadd [-g GID] 组名 不加-g 则按照系统默认的gid创建组,跟用户一样,gid也是从500开始的 修改用户组信息 : groupmod grou ...

  3. [转] iOS SDK:iOS调试技巧

    原文:  http://www.cocoachina.com/ios/20130517/6225.html 为什么你的数组包含3个项目而不是5个?为什么你的游戏运行缓慢?这些都跟调试有关,调试是开发过 ...

  4. c#结构体和字节数组的转换、字节数组和stream的转换

    本文由博主(YinaPan)原创,转载请注明出处:http://www.cnblogs.com/YinaPan/p/streambytsstruct.html using System; using ...

  5. cocos2d-x 音乐播放猜想

    "SimpleAudioEngine.cpp": void SimpleAudioEngine::playBackgroundMusic(const char* pszFilePa ...

  6. 二十分钟弄懂C++11 的 rvalue reference (C++ 性能剖析 (5))

    C++ 11加了许多新的功能.其中对C++性能和我们设计class的constructor或assignment可能产生重大影响的非rvalue reference莫属!我看了不少资料,能说清它的不多 ...

  7. dbm数据库

    所有版本的linux以及大多数的UNIX版本都随系统带有一个基本的.但却非常搞笑的数据存储历程集,他被称为dbm数据库.适用于存储比较静态的索引化数据库,即使用索引来存储可变长的数据结构,然后通过索引 ...

  8. Chrome扩展与用户隐私

    转载自https://www.imququ.com/post/chrome-extensions-and-user-privacy.html   Google Chrome浏览器应该早就是大家的默认了 ...

  9. java面试题及答案(基础题122道,代码题19道)

    JAVA相关基础知识 1.面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分, ...

  10. highCharts 图表统计控件使用方法

    1.首先引用js文件 在引用上面文件时,保证已经引用了jquery.js文件.且位置在上面两个文件之前. 2. <div id="container" style=" ...