Hibernate 第十讲 表关联关系(一)单项一对一外键关联

来源:互联网 发布:oracle数据库权限分配 编辑:程序博客网 时间:2024/06/05 23:05
一:annotation配置方式
package com.darren.relation.model;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;@Entitypublic class Wife {    private int id;    private String name;    @Id    @GeneratedValue    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;    }}
package com.darren.relation.model;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.JoinColumn;import javax.persistence.OneToOne;@Entitypublic class Husband {    private int id;    private String name;    private Wife wife;    @Id    @GeneratedValue    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;    }    @OneToOne    @JoinColumn(name="wife_id")    public Wife getWife() {        return wife;    }    public void setWife(Wife wife) {        this.wife = wife;    }}

 结果:生成的表结构为:

    create table Husband (        id integer not null auto_increment,        name varchar(255),        wife_id integer,        primary key (id)    )    create table Wife (        id integer not null auto_increment,        name varchar(255),        primary key (id)    )

二:xml配置方式

package com.darren.relation.model;public class WifeXml {    private int id;    private String 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;    }}
package com.darren.relation.model;public class HusbandXml {    private int id;    private String name;    private WifeXml wifeXml;    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 WifeXml getWifeXml() {        return wifeXml;    }    public void setWifeXml(WifeXml wifeXml) {        this.wifeXml = wifeXml;    }}
<?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.darren.relation.model">    <class name="WifeXml" table="wife_xml">        <id name="id" column="id">            <!-- 主键生成策略,自动增长 -->             <generator class="native" />        </id>        <property name="name"></property>    </class></hibernate-mapping>
<?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.darren.relation.model">    <class name="HusbandXml" table="husband_xml">        <id name="id" column="id">            <generator class="native" />        </id>        <property name="name"></property>        <!-- wifeXml 表示HusbandXml类中的wifeXml对象 -->        <!-- wife_id 表示HusbandXml生成的表中的外键名 -->        <!-- unique="true" 表示是一对一关系 -->        <many-to-one name="wifeXml" column="wife_id" unique="true"></many-to-one>    </class></hibernate-mapping>

结果:生成的表结构为:

    create table husband_xml (        id integer not null auto_increment,        name varchar(255),        wife_id integer unique,        primary key (id)    )    create table wife_xml (        id integer not null auto_increment,        name varchar(255),        primary key (id)    )