Hibernate基于主键的一对一映射关系
来源:互联网 发布:相遇网络 歌曲 编辑:程序博客网 时间:2024/04/29 04:03
<strong><span style="font-size:18px;"><span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">Hibernate中,一对一的映射关系有两种,一种是基于外键的一种是基于外键的,下面我来介绍一中基于主键的方式</span></span></strong>
首先创建两个实体类Person和IdCard,添加属性,生成相应的getter和setter方法。
然后就是Person.hbm.xml和IdCard.hbm.xml两个映射文件。
由于我把外键放到IdCard方,所以IdCard.hbm.xml做如下配置
<strong><span style="font-size:18px;"><?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping package="com.seven.domain"><class name="IdCard" table="t_idCard"><!-- 主键 --><id name="id" column="id"> <generator class="foreign"> <param name="property">person</param> </generator> </id><property name="number"/><!-- person属性,本方有外键 --><one-to-one name="person" class="Person" constrained="true"></one-to-one></class></hibernate-mapping></span></strong>有外键方的主键生成策略一定要是foregin,然后加参数property,值为关联的对方的属性,这里是person
没有外键方的Person.hbm.xml配置如下
<strong><span style="font-size:18px;"><?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping package="com.seven.domain"><class name="Person" table="t_person"><!-- 主键 --><id name="id" column="id"> <generator class="native"/> </id><property name="name"/><!-- idCard属性,本方无外键 --><one-to-one name="idCard" class="IdCard"></one-to-one></class></hibernate-mapping></span></strong>最后写一个测试类来测试下保存数据,代码如下
<strong><span style="font-size:18px;">package com.seven.domain;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration;import org.junit.Test;public class App { private static SessionFactory sessionFactory = new Configuration() .configure()// .addClass(IdCard.class)// .addClass(Person.class)// .buildSessionFactory(); @Test public void testSave(){ Session session = sessionFactory.openSession(); session.beginTransaction(); Person person = new Person(); person.setName("lkk"); IdCard idCard = new IdCard(); idCard.setNumber("32321321321"); //关联 person.setIdCard(idCard); idCard.setPerson(person); //保存 session.save(person); session.save(idCard); session.getTransaction().commit(); session.close(); }}</span></strong>最后在数据库中生成数据两个表
其中t_person 表中有一个主键和name字段,无外外键
t_idcard表中有一个引用t_person 主键的外键,也是表的主键
0 0
- Hibernate基于主键的一对一映射关系
- hibernate实现一对一关系映射(基于主键)
- Hibernate之基于主键映射的一对一关联关系
- 基于主键映射的 一对一关系
- Hibernate ORM映射:基于主键的一对一
- Hibernate关系映射 --- 一对一实例分析(双向关联,是基于主键的)
- Hibernate基于外键和主键的双向一对一关系映射
- hibernate基于主键的一对一映射(单双向)
- Hibernate基于主键一对一映射操作实例
- Hibernate基于主键的一对一关系----单向双向
- Hibernate-映射关系- 基于主键映射的1<->1映射
- Hibernate一对一映射(基于外键的映射,基于主键的映射)
- hibernate的一对一主键双向映射关系和外键双向映射关系(一)
- hibernate映射总结详解: 按主键映射一对一关联关系
- Hibernate_映射_关联关系_一对一映射3_基于主键的方式
- Hibernate实体关系映射——主键相同的一对一关系
- Hibernate之关联关系映射(一对一主键映射和一对一外键映射)
- hibernate主键相同的一对一关系
- C_C++_Java_简单题_for的流程
- iOS中常用的四种数据持久化方法简介
- 检车数组内number类型的小数位数(支持多维数组)
- ExecutorCompletionService的基本使用
- Xcode 7遇到 App Transport Security has blocked a cleartext HTTP 错误
- Hibernate基于主键的一对一映射关系
- Java抽象类和接口的区别
- fopen使用的"r"的区别"rb"
- LSM树由来、设计思想以及应用到HBase的索引
- openstack 网络详解(Essex版)
- UIWebView小结
- 通俗易懂SpringMVC整体框架理解
- HTML5plus 移动 App开发入门
- 黑马程序员——C语言-变量与常量