按照主键映射,按照外键映射

Address.hbm.xml:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="model">

<class name="Address" table="t_address">
        <id name="id" column="addressId">
            <generator class="foreign">
                <param name="property">user</param>
            </generator>
        </id>
        <property name="address" column="address"></property>
        <property name="zipcode" column="zipcode"></property>
        
        <one-to-one name="user" class="model.User" constrained="true"></one-to-one>
    </class>

</hibernate-mapping>

Address2.hbm.xml:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="model">

<class name="Address2" table="t_address2">
        <id name="id" column="addressId">
            <generator class="native"></generator>
        </id>
        <property name="address" column="address"></property>
        <property name="zipcode" column="zipcode"></property>
        
        <one-to-one name="user" class="model.User2" property-ref="address"></one-to-one>
    </class>

</hibernate-mapping>

User.hbm.xml:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="model">

<class name="User" table="t_user">
        <id name="id" column="userId">
            <generator class="native"></generator>
        </id>
        <property name="name" column="userName"></property>
        <one-to-one name="address" class="model.Address" cascade="all"></one-to-one>
    </class>

</hibernate-mapping>

User2.hbm.xml:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="model">

<class name="User2" table="t_user2">
        <id name="id" column="userId">
            <generator class="native"></generator>
        </id>
        <property name="name" column="userName"></property>
        <many-to-one name="address" class="model.Address2" column="addressId" cascade="all" unique="true"></many-to-one>
    </class>

</hibernate-mapping>

UserTest.java:

package service;

import model.Address;
import model.Address2;
import model.User;
import model.User2;

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

import util.HibernateUtil;

public class UserTest {

SessionFactory sessionfactory=HibernateUtil.getSessionFactory();//获取Session工厂
    private Session session;
    
    @Before
    public void setUp() throws Exception {
        session=sessionfactory.openSession();//生成一个新的session
        session.beginTransaction();//开启事务
    }

@After
    public void tearDown() throws Exception {
        session.getTransaction().commit();//提交事务
        session.close();//关闭session
    }

@Test
    public void testSave1(){
        User user=new User();
        user.setName("一号");
        
        Address address=new Address();
        address.setAddress("北极");
        address.setZipcode("1111");
        address.setUser(user);
        
        user.setAddress(address);
        session.save(user);
    }
    
    @Test
    public void testSave2(){
        User2 user=new User2();
        user.setName("二号");
        
        Address2 address=new Address2();
        address.setAddress("南极");
        address.setZipcode("2222");
        address.setUser(user);
        
        user.setAddress(address);
        session.save(user);
    }
}

转载于:https://www.cnblogs.com/daochong/p/4950279.html

hibernate一对一关系实现相关推荐

  1. Java程序员从笨鸟到菜鸟之(五十八)细谈Hibernate(九)hibernate一对一关系映射...

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

  2. Hibernate 一对一关系映射总结篇

    在Hibernate 关系映射中一对一是比较常见也常用的一种,一对一的关系映射类型中又可分为:一对一外键单向映射.一对一外键双向映射.一对一主键单向映射和一对一主键双向映射. 下面就简单的说下自己对这 ...

  3. SSH注解 关于hibernate一对一双向外键级联关系 查询两表的内容 例子

    由于要查询两张表的内容,所以去了解了下hibernate 的一对一级联 .现在写了个简单的SSH 注解的 一对一双向级联. 关于一对一双向级联详解我推荐这个博客.我感觉写的很好.     hibern ...

  4. hibernate对象关系实现(二)一对一

    双向一对一以部门和经理为例: a.部门和经理类中各自由对方的引用:(省略了get/set方法) b.数据库两种方式实现:一种(b.1)是外键映射,并将外键添加唯一约束(至于哪个对象的主键做外键,可随意 ...

  5. 【Hibernate】Hibernate实体关系映射——主键相同的一对一关系

    主键相同的一对一关系 由于两个实体类是一对一的关系,因此可设置两个实体类使用相同的主键.反过来,具有相同主键的实体被视为一对一的关系.这样两个表就省掉了外键关联. 以客户地址管理为例学习主键相同的一对 ...

  6. Hibernate之两种一对一关系映射方式

    前言 在前面的Hibernate学习中已经介绍了多对一.一对多.多对多的关系,本文主要介绍一对一关系.比如:一个用户有且仅有一个身份证,一个身份证也只能对应一个用户.而在学习Hibernate框架主要 ...

  7. hibernate中一对一关系映射

    这篇文章讲述的是hibernate中一对一关系映射,如有错误或者不当之处还望各位大神批评指正. 一对一映射(外键关联) 目标 假设一个人对应养一只狗,一只狗只能由一个人来养,完成一对一相关操作. 类编 ...

  8. 【Hibernate】Hibernate实体关系映射——双边的一对一关系

    凡是配置实体间关系的标签,例如:@ManyToOne.@OneToMany.@ManyToMany.@OneToOne等,都可以配置mappedBy属性.mappedBy表示该属性是反向属性,与另一边 ...

  9. Hibernate映射关系

    为什么80%的码农都做不了架构师?>>>    前言 Hibernate Annotation关系映射有下面几种类型: 一对一外键关联映射(单向) @OneToOne(cascade ...

最新文章

  1. Python3异常-AttributeError: module ‘sys‘ has no attribute ‘setdefaultencoding‘
  2. python英语-50 行代码,实现中英文翻译
  3. E - Water Distribution
  4. case when then else多个条件_CentOS「linux」学习笔记24:if和case多个条件判断
  5. java编程连接mysql_Java编程学习之JDBC连接MySQL
  6. 大力智能台灯与飞利浦台灯 智能调光功能体验
  7. 集成学习之参数调整策略
  8. linux远程登录 密钥,使用密钥认证机制远程登录Linux
  9. 启动NameNode和DataNode
  10. git2.29.2..2安装_Centos6.5+jumpserver组件安装(2)
  11. python 封装对象数据_Python数据库封装实现代码示例解析
  12. 【转载】Docker镜像打包示例
  13. ai人工智能对话了_对话式AI:智能虚拟助手和未来之路。
  14. unity3d大型互动照片墙
  15. 《生成式深度学习》Generative Deeping Learning 笔记 第二章 深度学习
  16. python爬虫获取html_python3爬虫获取html内容及各属性值的方法
  17. TK1刷机以及简单配置
  18. PTB-XL大型的心电图数据集
  19. Android 4高级编程(第3版)》
  20. eclipse写程序从hdfs上下载文件到本地报错:at org.apache.hadoop.util.Shell.runCommand

热门文章

  1. Qt DLL总结【二】-创建及调用QT的 DLL
  2. Linux下企业级分区方案
  3. 接口自动化测试平台-用例设计的思考
  4. C#中Abstract和Virtual的区别
  5. JSP基础(一)JSP介绍,文件结构及执行过程
  6. std::nothrow
  7. JavaScript操作HTML 元素
  8. UVA10474 Where is the Marble?【排序】
  9. Think In Java读书笔记:内部类覆盖及其初始化
  10. Oracle学习 第26天 Toad试用感受