Welcome 微信登录

首页 / 操作系统 / Linux / Hibernate关系映射 --- 一对一实例分析

一  概念介绍一对一的方式有两种,分为:(1)基于主键的方式 --- 共用主键(Person --- IdCard)典型的一对一    没有增加额外的列(2)基于外键的方式 --- 增加额外的一列下面介绍一下第一中基于主键的实现二  代码分析(1)Person类package com.hbsi.domain;public class Person {    private int id;    private String name;    private IdCard idCard;//一个人对应一个IdCard    public Person() {       super();       // TODO Auto-generated constructor stub    }    public Person(int id, String name, IdCard idCard) {       super();       this.id = id;       this.name = name;       this.idCard = idCard;    }    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;    }    public String toString() {       return "Person [id=" + id + ", name=" + name + ", idCard=" + idCard              + "]";    }}(2)IdCard类 package com.hbsi.domain;import java.util.Date;public class IdCard {    private int id;    private Date usefulLife;    private Person person; //一个IdCard只属于一个人    public IdCard() {       super();       // TODO Auto-generated constructor stub    }    public IdCard(int id, Date usefulLife, Person person) {       super();       this.id = id;       this.usefulLife = usefulLife;       this.person = person;    }    public int getId() {       return id;    }    public void setId(int id) {       this.id = id;    }    public Date getUsefulLife() {       return usefulLife;    }    public void setUsefulLife(Date usefulLife) {       this.usefulLife = usefulLife;    }     public Person getPerson() {       return person;    }    public void setPerson(Person person) {       this.person = person;    }}(3)在配置文件中配置Person类和IdCard类<!DOCTYPE hibernate-configuration PUBLIC    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"    "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"><!-- 配置文件 --><hibernate-configuration>    <session-factory>       <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>       <property name="hibernate.connection.url">jdbc:mysql:///demo</property>       <property name="hibernate.connection.username">root</property>       <property name="hibernate.connection.password">1234</property>       <!-- 方言 针对哪个数据库Mysql -->       <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>       <!-- 在程序运动的时候,增加自动创建表的属性,在程序终止 的时候销毁,但是在表格再次使用时,会重新建 -->       <property name="hibernate.hbm2ddl.auto">update</property>        <!-- 执行的sql语句显示出来 -->       <property name="hibernate.show_sql">true</property>       <!-- 指定映射文件的位置 -->       <mapping resource="com/hbsi/domain/Person.hbm.xml" />       <mapping resource="com/hbsi/domain/IdCard.hbm.xml" />    </session-factory></hibernate-configuration>