Rhythmk 学习 Hibernate 06

1、One To One 单相

 背景:

      古代一个老婆  只能关联一个老公

husband.java

package com.rhythmk.model;

public class husband {
	
	public Integer getHusbandId() {
		return husbandId;
	}
	public void setHusbandId(Integer husbandId) {
		this.husbandId = husbandId;
	}
	public String getName() {
		return Name;
	}
	public void setName(String name) {
		Name = name;
	}
	private Integer husbandId;
	private String Name;

}

  hasband.hbm.xml

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping  package="com.rhythmk.model">
    <class name="husband" table="t_husband">
        <id name="husbandId" type="int">
            <column name="husbandId" />
            <generator class="native" />
        </id>
        <property name="Name" type="string">
        
        </property>
    
     
    </class>
</hibernate-mapping>

wife.java

package com.rhythmk.model;

public class wife {

	private Integer wifeId;
	private String name;

	public Integer getWifeId() {
		return wifeId;
	}

	public void setWifeId(Integer wifeId) {
		this.wifeId = wifeId;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	
	public husband getHb() {
		return hb;
	}

	public void setHb(husband hb) {
		this.hb = hb;
	}

	private husband  hb;

	@Override
	public String toString() {
		return "wife [wifeId=" + wifeId + ", name=" + name + ", hb=" + hb + "]";
	}
	
}

  wife.hbm.xml

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping  package="com.rhythmk.model">
    <class name="wife" table="t_wife">
        <id name="wifeId" type="int">
            <column name="wifeId" />
            <generator class="native" />
        </id>
        <property name="Name" type="string">
        </property>
  <!--   one  to  one 类似于  one to many   只需要添加 unique =true 即可 -->
      <many-to-one name="hb"  column="husbandId"  ></many-to-one>
    </class>
</hibernate-mapping>

注意:

    one to one 类似于 one to many 只需要添加 unique =true 即可

 2、One To One 双向

      跟单相查不多  就是两边都配上  many to one

调整 hasband.hbm.xml 添加:

      <!--   one  to  one 类似于  one to many   只需要添加 unique =true 即可 -->
      <many-to-one name="mywife"  column="wifeId"  ></many-to-one>

调整 husband.java :

	public wife getMywife() {
		return mywife;
	}
	public void setMywife(wife mywife) {
		this.mywife = mywife;
	}
	private wife mywife;

  测试:

	@Test
	public void test02_add() {
		Session session = null;
		try {
			session = HibernateUtil.getSessionFactory().openSession();
			session.beginTransaction();

			husband hb = new husband();
			hb.setName("王大1");
			wife w = new wife();
			w.setName("张妞 2");
			w.setHb(hb);
			hb.setMywife(w);
			session.save(hb);
			session.save(w);
			System.out.println(w.toString());
			session.getTransaction().commit();

		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if (session != null)
				session.close();
		}
	}

  输出:

Hibernate: insert into t_husband (Name, wifeId) values (?, ?)
Hibernate: insert into t_wife (Name, husbandId) values (?, ?)
wife [wifeId=6, name=张妞 2, hb=com.rhythmk.model.husband@8b677f]
Hibernate: update t_husband set Name=?, wifeId=? where husbandId=?

代码下载地址:

http://pan.baidu.com/s/1gdFt7ur

原文地址:https://www.cnblogs.com/rhythmK/p/3704710.html