首页 > 代码库 > 映射一对一关联

映射一对一关联

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());    }}

 

映射一对一关联