zoukankan      html  css  js  c++  java
  • .Hibernate一对一映射与组件映射

           1.按照外键映射(Hibernate提供了两种映射一对一关联关系的方式:按照外键映射和按照主键映射


    实现需要:

    创建实体类Users1Resume1

    public class Users1 {

    private Integer userid;

    private String username;

    private String userpass;

    private Resume1 resume1;

    }

    ***********

    public class Resume1 {

    private Integer resid;

    private String resname;

    private String rescardno;

    private Users1 users1;

    }

    -----------------------

    配置文件Users1.hbm.xmlResume1.hbm.xml:

               Users1.hbm.xml

    <?xml version="1.0" encoding="UTF-8"?>

    <!DOCTYPE hibernate-mapping PUBLIC 

        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

    <hibernate-mapping package="cn.happy.onetoone_fk">

       <class name="Users1" table="USERS1">

         <id name="userid" column="USERID" >

            <generator class="native"></generator>

         </id>

         <property name="username" column="USERNAME" type="string"></property>

         <property name="userpass" column="USERPASS" type="string"></property>

         <one-to-one name="resume1" class="Resume1" property-ref="users1"></one-to-one>

       </class>

    </hibernate-mapping>

    *********************

                Resume1.hbm.xml

    <?xml version="1.0" encoding="UTF-8"?>

    <!DOCTYPE hibernate-mapping PUBLIC 

        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

    <hibernate-mapping package="cn.happy.onetoone_fk">

       <class name="Resume1" table="RESUME1">

         <id name="resid" column="RESID" >

            <generator class="native"></generator>

         </id>

         <property name="resname" column="RESNAME" type="string"></property>

         <property name="rescardno" column="RESCARDNO" type="string"></property>

         <many-to-one name="users1" class="Users1" cascade="all" column="RESUSERID" unique="true"></many-to-one>

       </class>

    </hibernate-mapping>

    ------------------------------------

    2.主键映射

    实现需要: 

    创建实体类Users2Resume2

    public class Users2 {

    private Integer userid;

    private String username;

    private String userpass;

    private Resume2 resume2;

    *******************

    public class Resume2 {

    private Integer resid;

    private String resname;

    private String rescardno;

    private Users2 users2;

    }

    ----------------------------

    配置文件Users1.hbm.xmlResume1.hbm.xml

            Users1.hbm.xml

    <?xml version="1.0" encoding="UTF-8"?>

    <!DOCTYPE hibernate-mapping PUBLIC 

        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

    <hibernate-mapping package="cn.happy.onetoone_pk">

       <class name="Users2" table="USERS2">

         <id name="userid" column="USERID" >

            <generator class="foreign">

              <param name="property">resume2</param>

            </generator>

         </id>

         <property name="username" column="USERNAME" type="string"></property>

         <property name="userpass" column="USERPASS" type="string"></property>

         <one-to-one name="resume2" class="Resume2" constrained="true"></one-to-one>

       </class>

    </hibernate-mapping>

    ************************

          Resume2.hbm.xml

    <?xml version="1.0" encoding="UTF-8"?>

    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

                                "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

    <hibernate-mapping package="cn.happy.onetoone_pk">

     <class name="Resume2" table="RESUME2">

      <id column="RESID" name="resid">

       <generator class="native"/>

      </id>

      <property column="RESNAME" name="resname" type="string"/>

      <property column="RESCARDNO" name="rescardno" type="string"/>

      <one-to-one  name="users2" cascade="all" class="Users2"/>

     </class>

    </hibernate-mapping>

    ==========================================

       一  。组件映射(建立关系数据模型的一个重要原则是在不会导致数据冗余的前提下,尽可能减少数据库表的数目及表之间的外键参照关系)

      

    实现需求:

    创建EmpHomeAddressEmpInfo

    public class EmpHomeAddress {

    private String ehomestreet;

    private String ehomecity;

    private String ehomeprovince;

    private String ehomezipcode;

    private EmpInfo empinfo;

    }

    --------------

    public class EmpInfo {

    private Integer eid;

    private String ename;

    private EmpHomeAddress ehome;

    }

    *************************

    创建配置文件EmpInfo.hbm.xml

    <?xml version="1.0" encoding="UTF-8"?>

    <!DOCTYPE hibernate-mapping PUBLIC 

        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

    <hibernate-mapping package="cn.happy.component">

       <class name="EmpInfo" table="EMPINFO">

           <id name="eid" column="EID">

            <generator class="native"></generator>

           </id>

           <property name="ename" column="ENAME" type="string"></property>

           <component name="ehome" class="EmpHomeAddress">

              <parent name="empinfo"/>

              <property name="ehomestreet" column="EHOMESTREET" type="string"></property>

              <property name="ehomecity" column="EHOMECITY" type="string"></property>

              <property name="ehomeprovince" column="EHOMEPROVINCE" type="string"></property>

              <property name="ehomezipcode" column="EHOMEZIPCODE" type="string"></property>

           </component>

       </class> 

    </hibernate-mapping>

  • 相关阅读:
    Win7 vs2017 WDK 1803 1809 驱动开发 出错 KMDF
    http 请求 post get 长度限制
    IO模式和IO多路复用(阻塞IO、非阻塞IO、同步IO、异步IO等概念)
    select/poll 和 epoll 比较
    centos查看端口被哪个应用端口占用命令
    mysql索引知识简单记录
    Spring钩子方法和钩子接口的使用详解
    mysql使用自增Id为什么存储比较快
    分布式Id教程
    如何配置JVM系统属性及获取方式System.getProperty("pname")
  • 原文地址:https://www.cnblogs.com/ainiaiwo/p/5842377.html
Copyright © 2011-2022 走看看