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. 一些css小用法总结(持续更新~)

    1.用:before和:after实现小尖角效果 <div class="div"></div> .div{ background: #fff; borde ...

  2. php创建读取 word.doc文档

    创建文档; <?php $html = "this is question"; for($i=1;$i<=3;$i++){ $word = new word(); $w ...

  3. (转)DEDECMS模板原理、模板标签学习 - .Little Hann

    本文,小瀚想和大家一起来学习一下DEDECMS中目前所使用的模板技术的原理: 什么是编译式模板.解释式模板,它们的区别是什么? 模板标签有哪些种类,它们的区别是什么,都应用在哪些场景? 学习模板的机制 ...

  4. c# 网站发布

    .net 网站发布简单步骤: 1.选择需要发布的网站,右击->发布 1)配置文件:可以任意新建文件配置名 2)连接: 发布方法选择系统文件:选择目标位置,任意新建一个位置即可. 3)设置:选择D ...

  5. cas sso单点登录系列7_ 单点登录cas常见问题系列汇总

    转:http://blog.csdn.net/matthewei6/article/details/50709252 单点登录cas常见问题(一) - 子系统是否还要做session处理?单点登录ca ...

  6. JQUERY1.9学习笔记 之基本过滤器(十一) 奇数选择器

    奇数选择器jQuery( ":odd" ) 例:匹配表格的奇数行. <!DOCTYPE html><html lang="zh-cn"> ...

  7. Ecshop 数据库操作方法getRow、getAll、getOne区别

    ECShop没有使用一些开源的数据库操作类,比如adodb或者PEAR,而是封装了自己的实现.这样做的好处是实现非常轻量,大大减小了分发包的文件大小.另外,当网站需要做memcached缓存时,也可以 ...

  8. scrapy1.1入门用例简介

    今天将scrapy安装成功,测试了下,倒腾了好长时间,才倒腾成功,特此分享. 其实最好的老师就是scrapy的帮助文档,只要把文档看懂,照着做,也就啥都会儿了! 帮助文档下载见http://downl ...

  9. FFT快速傅立叶

    Description 给出两个n位10进制整数x和y,你需要计算x*y. Input 第一行一个正整数n.第二行描述一个位数为n的正整数x.第三行描述一个位数为n的正整数y. Output 输出一行 ...

  10. XCode7打包上传报错

      在XCode7上传应用时,上传失败遇到两个错误,提示如下: ERROR ITMS-90535: "Unexpected CFBundleExecutable Key. The bundl ...