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

  • 相关阅读:
    Sysbench对Mysql进行基准测试
    yum安装软件时报错libmysqlclient.so.18()(64bit)
    redis启动报错Could not connect to Redis at 127.0.0.1:6379: 由于目标计算机积极拒绝,无法连接。
    cmd 中连接mysql时报'mysql'不是内部或外部命令,也不是可运行的程序或批处理文件
    Mysql远程连接权限
    Git基础教程
    电脑adb命令给智能电视安装APK
    python基础之类
    python基础之函数
    前端之CSS第二部分属性相关
  • 原文地址:https://www.cnblogs.com/rhythmK/p/3704710.html
Copyright © 2011-2022 走看看