Hibernate 第十讲 表关联关系(二)双向项一对一外键关联

来源:互联网 发布:java三大框架书籍 编辑:程序博客网 时间:2024/05/29 15:21

一:annotation配置方式:

package com.darren.relation.model;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.OneToOne;@Entitypublic class Wife {    private int id;    private String name;    private Husband husband;    @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;    }    //意思是被Husband类里边的wife属性映射凡是双向关联,必设mappedBy属性    @OneToOne(mappedBy="wife")    public Husband getHusband() {        return husband;    }    public void setHusband(Husband husband) {        this.husband = husband;    }}
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;    private HusbandXml husbandXml;    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 HusbandXml getHusbandXml() {        return husbandXml;    }    public void setHusbandXml(HusbandXml husbandXml) {        this.husbandXml = husbandXml;    }}
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;    }}
<?xmlversion="1.0"?><!DOCTYPE hibernate-mapping PUBLIC        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mappingpackage="com.darren.relation.model">    <class name="WifeXml"table="wife_xml">        <id name="id"column="id">            <!--主键生成策略,自动增长 -->             <generator class="native"/>        </id>        <property name="name"></property>        <!-- husbandXml表示WifeXml里的属性husbandXml -->        <!-- wifeXml表示被 HusbandXml类里的wifeXml属性映射-->        <one-to-one name="husbandXml" property-ref="wifeXml"></one-to-one>    </class></hibernate-mapping>

<?xmlversion="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)    )
原创粉丝点击