这篇讲解基于外键的一对一单向关联映射

1.考察如下信息,人和身份证之间是一个一对一的关系。表的设计

注意:基于外键的一对一关联的表结构和多对一的表结构是一致的,但是,外键是唯一的。

2.类的结构

Person.java

public class Person implements Serializable{private int id;private String name;private IdCard idCard;public Person() {}public Person(String name) {super();this.name = name;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public IdCard getIdCard() {return idCard;}public void setIdCard(IdCard idCard) {this.idCard = idCard;}
}

IdCard.java

public class IdCard implements Serializable{private String id;private String address;public IdCard() {// TODO Auto-generated constructor stub
    }public IdCard(String id, String address) {super();this.id = id;this.address = address;}public String getId() {return id;}public void setId(String id) {this.id = id;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}}

3.映射文件信息:

IdCard.hbm.xml

<hibernate-mapping package="cn.sxt.pojo"><class name="IdCard" table="t_idCard"><id name="id"><generator class="assigned"></generator></id><property name="address"/></class>
</hibernate-mapping>

Person.hbm.xml

<hibernate-mapping package="cn.sxt.pojo"><class name="Person" table="t_person"><id name="id"><generator class="native"></generator></id><property name="name"/><!-- 基于外键的一对一和多对一的表结构是一样的,所以映射文件也一样,要保证外键是唯一的 --><many-to-one name="idCard" column="idCardId" unique="true"></many-to-one></class>
</hibernate-mapping>

4.测试

public class HibernateTest {/*** 生成数据库表的工具方法* */@Testpublic void testCreateDB(){Configuration cfg = new Configuration().configure();SchemaExport se = new SchemaExport(cfg);//第一个参数  是否打印sql脚本//第二个参数 是否将脚本导出到数据库中执行se.create(true, true);}/*** 初始化表数据*/@Testpublic void testInit(){Session session = null;Transaction tx = null;try {session = HibernateUtil.getSession();tx = session.beginTransaction();IdCard card1 = new IdCard("110086", "湖北武当");IdCard card2 = new IdCard("110087", "光明顶");Person p1 = new Person("张三疯");p1.setIdCard(card1);Person p2 = new Person("殷素素");p2.setIdCard(card2);session.save(card1);session.save(card2);session.save(p1);session.save(p2);tx.commit();} catch (Exception e) {if(tx!=null)tx.rollback();}finally {HibernateUtil.close();}}/***/@Testpublic void testGetData(){Session session = HibernateUtil.getSession();Person p1 = (Person)session.get(Person.class, 1);System.out.println(p1.getName()+"----"+p1.getIdCard().getId()+"----"+p1.getIdCard().getAddress());HibernateUtil.close();}
}

转载于:https://www.cnblogs.com/Vincent-yuan/p/11203267.html

java之hibernate之基于外键的一对一单向关联映射相关推荐

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

    [SSH进阶之路]Hibernate基本原理(一) ,小编介绍了Hibernate的基本原理以及它的核心,采用对象化的思维操作关系型数据库. [SSH进阶之路]Hibernate搭建开发环境+简单实例 ...

  2. 基于外键关联的一对多单向关联

    基于外键关联的单向一对多关联是一种很少见的情况,并不推荐使用. <class name="Person"><id name="id" colu ...

  3. MYSQL外键约束和表关联

    1. 外键约束 约束 : 约束是一种限制,它通过对表的行或列的数据做出限制,来确保表的数据的完整性.关联性 foreign key 功能 : 建立表与表之间的某种约束的关系,由于这种关系的存在,能够让 ...

  4. django 设置外键_django2.0前后版本定义外键和一对一关系的差别

    概述 Django在根据models生成数据库表时报 __init__() missing 1 required positional argument: 'on_delete',简单记录下解决过程. ...

  5. [置顶] Hibernate从入门到精通(十)多对多单向关联映射

    上一篇文章Hibernate从入门到精通(九)一对多双向关联映射中我们讲解了一下关于一对多关联映射的相关内容,这次我们继续多对多单向关联映射. 多对多单向关联映射 在讲解多对多单向关联映射之前,首先看 ...

  6. Hibernate从入门到精通(十)多对多单向关联映射

    上一篇文章Hibernate从入门到精通(九)一对多双向关联映射中我们讲解了一下关于一对多关联映射的相关内容,这次我们继续多对多单向关联映射. 多对多单向关联映射 在讲解多对多单向关联映射之前,首先看 ...

  7. java中如何声明外键约束_java – 如何使用Hibernate注释标记外键约束...

    我正在尝试使用Hibernate注释为我的数据库表编写模型类. 我有两个表,每个表都有一个主键User和Question. @Entity @Table(name="USER") ...

  8. hibernate one2one 唯一外键关联(双向关联)

    hibernate的一对一唯一外键关联映射(双向关联 Person <------->IdCard) 一对一唯一外键关联采用<one - to -one>标签映射,必须指定标签 ...

  9. Hibernate_8_Person和IdCard实例_一对一关系:基于外键

    1)建立Person类: public class Person {private Integer id;private String name;private IdCard IdCard;publi ...

最新文章

  1. windows中安装Node.js-安装angular-cli
  2. POJ 1094 Sorting It All Out (拓扑排序)
  3. ios UIScrollView 中控件自动增加间隔
  4. #架构#重新设计socks5代理代码框架
  5. 怎么选择多专业取费_从事翻译要怎么选择行业和专业?
  6. 在VS2017中用c#编写程序执行python遇到中文不能处理出现乱码的情况
  7. codeforces 1039B Subway Pursuit【二分+随机】
  8. Linux下基于 Docker 搭建 MySQL 主从复制(1 Master+2 Slave)
  9. 【人工智能】深度学习自动构图研究报告
  10. 库克警告员工不要泄露公司信息:将全力追查
  11. u-boot移植随笔:终于解决Nor Flash的问题了
  12. 清华大学自主研究的计算机,清华大学人工智能研究院成立基础理论研究中心,朱军教授任中心主任...
  13. tomcat7 java_java开发环境配置(windows下JDK7+tomcat7)
  14. Android 安装 GMS 方法
  15. 面试 — 海康威视(Android客户端开发)
  16. 审阅史上“醉”烂的代码~
  17. 人工智能助力三维几何自动化建模
  18. 少儿机器人编程课程学什么
  19. MB/s与Mbit/s的区别!!!
  20. 小程序模板报价_小程序模板价格_小程序模板使用多少钱

热门文章

  1. 斯坦福大学机器学习——高斯判别分析
  2. oh-my-zsh upgrade problem
  3. JS ES6中export和import详解
  4. 【oracle】关于创建表时用default指定默认值的坑
  5. Exchange Server 2016管理系列课件39.新建本地移动请求
  6. 程序员的国庆节如何安排,你想好了吗?
  7. R语言编程艺术(3)R语言编程基础
  8. centos7 搭建Docker Registry
  9. NodeJS开发环境配置
  10. 用手动和自动分别实现使用其DVD安装盘作为本地yum源