映射一对一关联

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

一对一关系映射即为关系双方都含有对方一个引用其实在生活中一
对一关系也很常见比如人和身份证学生和学号等都是一对一的关
系映射一对一映射分为单向的和双向的没种关系映射又可以分为主
键关联映射,唯一外键关联映射。

保存员工档案的同时分配给员工一个账号..

在映射持久化对象中的属性时,需要注意一些问题

Resume1.hbm.xml

<many-to-many

  name="users1"

  class="cn.happy.entity.Users1"

  column="resuserid"

  cascade="all"  //为了

  unique="true" //表明每一个resume1对象和User1对象之间一对一的关联关系

/>

Users1.hbm.xml

<one-to-one name="resume1"

  class="cn.happy.entity.User"

  property-ref="users1"  //表明Resume1的user1属性建立了从User1对象到Resume1对象的关联

/>

Test代码

package cn.happy.test;

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

import cn.happy.entity.Resume1;
import cn.happy.entity.Users1;
import cn.happy.util.HibernateUtil;

public class MyTest {
    Session session;
    Transaction tx;
    @Before
    public void initDate(){
        session=HibernateUtil.getSession();
        tx=session.beginTransaction();
    }
    @After
    public void afterDate(){
        tx.commit();
        HibernateUtil.closeSession();
    }
    @Test
    public void addTest(){
        //构建档案
        Resume1 resume1 =new Resume1(3,"张三","21000302123165456");
        //构建用户,不需要提供主键,因为user2对象和resume2对象共同用一个oid
        Users1 users1 =new Users1("zhangsan","123456");
        resume1.setUsers1(users1);
        users1.setResume1(resume1);
        session.save(resume1);
    }
    @Test
    public void getoneTest(){
        Resume1 resume1=(Resume1)session.load(Resume1.class, 1);
        Users1 users1 =resume1.getUsers1();
        System.out.println("姓名:"+resume1.getResname());
        System.out.println("用户名"+users1.getUsername());
    }
}
时间: 2024-08-04 23:28:16

映射一对一关联的相关文章

Hibernate之映射一对一关联

一.一对一关联的概念: 一对一之间的关联是指:两张表中的信息是一对一的关系,比如我们每个人和身份证的关系,一个人对应一张身份证,一张身份证也只能对应一个人. Hibernate提供了两种映射一对一关联关系的方式:按照外键映射和按照主键映射. 在下面的例子中我们分别以两张表:员工表和员工档案表为例:介绍这两种映射关系方式. 二.按外键映射 1.关联的外键可存放于任意一端,并在存放外键的一端增加<many-to-one>元素,能够增加唯一约束实现一对一关联.        2.<many-t

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

Hibernate映射:一对一关联 1.按照外键映射 2.按照主键映射 组件映射 下面以员工账号表和员工档案表(员工账号和档案表之间是一对一的关系)为例,介绍这两种映射关系,并使用这两种 映射方式分别完成以下持久化操作 (1)保存员工档案的同时分配给员工一个账号 (2)加载员工档案的同时加载账号信息 一:按照外键映射

Hibernate映射一对一关联关系

映射一对一关联 Hibernate提供了两种映射一对一关联关系的方式,分别是按照外键映射和按照主键映射. 下面是员工表和档案信息表(员工和档案表之间的关系是一对一的关系)  档案表(dept) 1 public class Dept { 2 private Integer deptid; 3 private String mystreet; 4 private Emp emp; 5 6 public Dept() { 7 } 8 9 public Dept(Integer deptid, Str

04.Hibernate一对一关联

前言:本文主要介绍使用Hibernate映射一对一的关联关系的两种方式:使用外键映射.使用主键映射. 1.数据库表的一对一关联关系 本文根据客户信息表(tb_customer)和地址信息表(tb_address)来说明其一对一的关系,每一个客户都有一个家庭住址,而每一个地址都对应一个客户. (1)使用外键映射的数据库表说明 数据库表模型图如下: 数据库建表语句如下: CREATE TABLE tb_customer ( id bigint NOT NULL auto_increment COMM

006——hibernate一对一关联映射

一对一关联映射有两种方式:主键关联和外键关联 以夫妻为例(Husband----Wife) 单向关联实体类: Husband.java package com.java.hibernate; public class Husband { private int id; private String name; private Wife wife; public Wife getWife() { return wife; } public void setWife(Wife wife) { thi

MyBatis应用开发(13)映射之一对一关联

1.1.1. 一对一单向关联 resultMap可以定义实体之间的一对一关联关系.本文将介绍如何实现Person和IdCard之间的一对一单向关联关系.假定在业务逻辑上存在这样的约束:IdCard的personid属性应该等于Person的id属性,一个Person唯一对应于一个IdCard. 目标:Person可以通过idCard属性导航到IdCard,而IdCard不能通过person属性导航到Person. Person类: /** * @Title: Person.java * @Pac

【SSH进阶之路】Hibernate映射——一对一双向关联映射(六)

上篇博文[SSH进阶之路]Hibernate映射--一对一单向关联映射(五),我们介绍了一对一的单向关联映射,单向是指只能从人(Person)这端加载身份证端(IdCard),但是反过来,不能从身份证端加载人得信息.如图所示: 关键原因在于对象模型具有方向性: 单向:一端只能加载另一端,不能反过来. 双向:两端都可以加载另一端. 问题来了:如何我们想从身份证端(IdCard)加载人(Person),怎么办呢? 下面我们开始介绍一对一的双向关联映射. 映射原理 双向关联映射与单向关联映射的原理是一

【SSH进阶之路】Hibernate映射——一对一单向关联映射(五)

[SSH进阶之路]Hibernate基本原理(一) ,小编介绍了Hibernate的基本原理以及它的核心,采用对象化的思维操作关系型数据库. [SSH进阶之路]Hibernate搭建开发环境+简单实例(二),小编搭建了基本Hibernate的开发环境,并做了一个简单实例,对它的基本原理有了一个理性的认识. [SSH进阶之路]Hibernate基本映射(三),我们介绍了Hibernate的基本映射(即对一个实体进行映射)的相关概念,并给大家实现相关实例,比较简单. [SSH进阶之路]Hiberna

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

Hibernate提供了两种映射一对一映射关联关系的方式: 01.按照外键映射 02.按照主键映射 下面以员工账号表和员工档案表(员工账号和档案表之间是一对一的关系)为例,介绍这两种映射关系,并使用这两种 映射方式分别完成以下持久化操作 (1)保存员工档案的同时分配给员工一个账号 (2)加载员工档案的同时加载账号信息 一:按照外键映射 需要提示: HibernateUtil工具类(用于获取session和关闭session) package cn.zhang.util; import org.h