zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Delphi 的RTTI机制浅探3(超长,很不错)
    关于跨进程使用回调函数的研究:以跨进程获取Richedit中RTF流为例(在Delphi 初始化每一个TWinControl 对象时,将会在窗体 的属性(PropData)中加入一些标志,DLL的HInstance的值与HOST 进程的HInstance并不一致)
    获得QQ聊天输入框中的内容
    使用Jenkins来构建Docker容器
    各种排序算法汇总
    ASP.NET Web API和ASP.NET Web MVC中使用Ninject
    s性能优化方面的小知识
    算法时间复杂度的计算
    js模块开发
    NET Framework 4.5 五个新特性
  • 原文地址:https://www.cnblogs.com/rhythmK/p/3704710.html
Copyright © 2011-2022 走看看