87-----hibernate的几种映射关系总结

转载 2016年06月01日 08:09:06

1.一对一(外键)

<class name="cn.jbit.hiberntedemo.entity.Resume1" table="RESUME1">
    <id name="resid" type="java.lang.Integer">
        <column name="RESID" precision="6" scale="0" />
        <generator class="assigned" />
    </id>
    <many-to-one name="users1"
    class="cn.jbit.hiberntedemo.entity.Users1"
    column="RESUSERID" cascade="all" unique="true"/>
    <property name="resname" type="java.lang.String">
        <column name="RESNAME" length="40"/>
    </property>
    <property name="rescardno" type="java.lang.String">
        <column name="RESCARDNO" length="40"/>
    </property>
</class>

一对一外键映射:让外键唯一

主表<one-to-one>

子表<many-to-one unique="true"/>

一对一主键映射:让子表主键使用主表中的主键

主表<one-to-one>

子表<id><generatorclass="foreign"><param name=”property”></></></>

     <one-to-one name=""constrained="true">


2.一对一:按照主键映射

<class name="cn.jbit.hiberntedemo.entity.Users2" table="USERS2">
    <id name="userid" type="java.lang.Integer" column="USERID">
        <generator class="foreign">
            <param name="property">resume2</param>
        </generator>
    </id>
    <one-to-one name="resume2"
    class="cn.jbit.hiberntedemo.entity.Resume2"
    constrained="true"/>
    <property name="username" type="java.lang.String">
        <column name="USERNAME" length="40" not-null="true" />
    </property>
    <property name="userpass" type="java.lang.String">
        <column name="USERPASS" length="40" />
    </property>
</class>


3.组件映射

<class name="cn.jbit.hiberntedemo.entity.Empinfo" table="EMPINFO">
    ......
    <component name="ehome"
        class="cn.jbit.hiberntedemo.entity.EmpHomeAddress">
        <parent name="empinfo" />
        <property name="ehomestreet" type="java.lang.String" 
                         column="EHOMESTREET" />
        <property name="ehomecity" type="java.lang.String“
                         column="EHOMECITY" />
        <property name="ehomeprovince" type="java.lang.String" 
                         column="EHOMEPROVINCE" />
        <property name="ehomezipcode" type="java.lang.String"   
                         column="EHOMEZIPCODE" />
    </component>
</class>

创建CUSTOMER表,表中有电话(TEL)、年龄(AGE)、姓氏(FIRSTNAME)、名字(LASTNAME)字段。

创建Customer类,类中有电话(tel)、年龄(age)、姓名(name)属性,其中name属性是Name类型;创建Name类,类中有姓氏(firstname)、名字(lastname)属性。

CUSTOMER表中的FIRSTNAMELASTNAME字段与Customer类中的name属性对应。

保存Customer对象,并按主键加载Customer对象,打印telagename属性。



4.多对一单向关联关系

<p><span style="color:#061324;">public class </span><span style="color:#061324;">Emp</span><span style="color:#061324;">implements </span><span style="color:#061324;">Serializable</span><span style="color:#061324;">{    </span></p><p><span style="color:#061324;">   private Integer </span><span style="color:#061324;">empNo</span><span style="color:#061324;">;</span></p><p><span style="color:#061324;">   private String </span><span style="color:#061324;">empName</span><span style="color:#061324;">;</span></p><p><span style="color:#061324;">   private </span><span style="color:#061324;">Dept</span><span style="color:#061324;">dept</span><span style="color:#061324;">;</span></p><p><span style="color:#061324;">}</span></p>
<class name="cn.jbit.hibernatedemo.entity.Emp" table="emp">
        <id name="empNo" column="EMPNO" type="java.lang.Integer">
            <generator class="assigned"/>
        </id>
			......
        <many-to-one name="dept" column="DEPTNO"       
              class="cn.jbit.hibernatedemo.entity.Dept"  />
</class>
<p><span style="color:#061324;">public class </span><span style="color:#061324;">Dept</span><span style="color:#061324;">implements </span><span style="color:#061324;">Serializable</span><span style="color:#061324;">{</span></p><p><span style="color:#061324;">   private Byte </span><span style="color:#061324;">deptNo</span><span style="color:#061324;">;</span></p><p><span style="color:#061324;">   private String </span><span style="color:#061324;">deptName</span><span style="color:#061324;">;</span></p><p><span style="color:#061324;">   private String location;</span></p><p><span style="color:#061324;">}</span></p>
<class name="cn.jbit.hibernatedemo.entity.Dept" table="dept">
        <id name="deptNo" column="DEPTNO" type="java.lang.Byte">
            <generator class="assigned"/>
        </id>
        <property name="deptName" type="java.lang.String" column="DNAME"/>
       ......
</class>



5.一对多双向关联关系

public class Dept implements Serializable {
    private Byte deptNo;
    private String deptName;
    private String location;
    private Set<Emp> emps = new HashSet<Emp>();
}
<p><span style="color:#061324;"><classname="cn.jbit.hibernatedemo.entity.Dept" table="dept"></span></p><p><span style="color:#061324;">       <id name="deptNo" column="DEPTNO"type="java.lang.Byte"></span></p><p><span style="color:#061324;">            <generatorclass="assigned"/></span></p><p><span style="color:#061324;">       </id></span></p><p><span style="color:#061324;">       ......</span></p><p><span style="color:#061324;">       <set name="emps"></span></p><p><span style="color:#061324;">         <keycolumn="DEPTNO"></key></span></p><p><span style="color:#061324;">         <one-to-manyclass="cn.jbit.hibernatedemo.entity.Emp"/></span></p><p><span style="color:#061324;">       </set></span></p><p><span style="color:#061324;"></class></span></p>


6.多对多关联关系

配置Project和Employee的多对多双向关联

Project Employee持久化类

Project.hbm.xmlEmployee.hbm.xml


<class name="cn.jbit.hibernatedemo.entity.Employee" table="EMPLOYEE">
    <id name="empid" type="java.lang.Integer">
        <column name="EMPID" precision="6" scale="0" />
        <generator class="assigned" />
    </id>
    ......
    <set name="projects" inverse="true" table="PROEMP">
        <key column="REMPID"/>
        <many-to-many class="cn.jbit.hibernatedemo.entity.Project" 
                                    column="RPROID" />
    </set>
</class>

<class name="cn.jbit.hibernatedemo.entity.Project" table="PROJECT">
    <id name="proid" type="java.lang.Integer">
        <column name="PROID" precision="6" scale="0" />
        <generator class="assigned" />
    </id>
    ......
    <set name="employees" table="PROEMP" cascade="save-update">
        <key column="RPROID" />
        <many-to-many class="cn.jbit.hibernatedemo.entity.Employee" 
                                    column="REMPID" />
    </set>
</class>





hibernate映射关系总结

注意:这里的关系是指:对象之间的关系,并不是指数据库的关系,-----红色重要          存在以下关系: 1、    一对一 u       单向(主键、外键) u  ...
  • u012188794
  • u012188794
  • 2015年03月12日 15:26
  • 688

Hibernate 的几种映射关系

首先我们了解一个名词ORM,全称是(Object Relational Mapping),即对象关系映射。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现,这样开发人员就可以把对...
  • sjyingwei
  • sjyingwei
  • 2012年12月13日 11:08
  • 211

Linux软件安装总结

首先Xshell一个好用的选项,如果你同时要管理几台一样的服务器组成的集群,一台一台操作很麻烦,可以使用Xshell菜单栏——工具——勾选发送键输入到所有会话,这样你在一个bash窗口输入的指令,其它...
  • u014532775
  • u014532775
  • 2017年12月20日 16:44
  • 79

加密算法罗列总结对比

非对称加密算法RSA Elgamal (基础Diffie-Hellman) Rabin D-H ECC(椭圆曲线加密算法) 背包算法 适用范围: 加密数据量少,不适合大量数据传输, 适合加密对称算...
  • qianguozheng
  • qianguozheng
  • 2015年06月16日 23:30
  • 1194

hibernate几种映射关系的笔记

最近很少写博客,主要是工作的各种变动,也有一个原因是将学习重心从android暂时转移到后台,花了几个月的时间来学习了Spring、SpringMVC、Hibernate。个人觉得其中最难学的应该是h...
  • selfreeyuan
  • selfreeyuan
  • 2016年09月14日 15:47
  • 378

Hibernate 几种重要的映射关系(...)

 DocumentCatalog自身1对多,在hbm.xml文件中的写法 order-by="order_">          ont-to-many 有一个重要的属性设置lazy,设为true 时...
  • aduovip
  • aduovip
  • 2009年11月11日 01:41
  • 499

几种排序算法的简单总结

离职总是很麻烦,老板人不错,得好好把工作对接完咯。晚上闲一下就谢谢博客。 前言     下面会讲到一些简单的排序算法(均基于java实现),并给出实现和效率分析。     使用的基类如下: publ...
  • anxpp
  • anxpp
  • 2016年03月23日 23:16
  • 3379

Hibernate的映射关系总结

多对一映射:在说一对一外键单向映射中,在“主”端维护的时候用的是 标签,里面添加的unique="true" 属性来约束的。这里不添加unique属性的时候就变成多对一的映射关系了。    “主”端...
  • yueyenancha
  • yueyenancha
  • 2016年11月03日 22:39
  • 72

存储器类型总结

说明:从操作系统来讲,不同类型的存储器的出现正是为了实现经典的内存架构:多级缓存结构,为了匹配高速的CPU。从CPU内部的寄存器,到高速cache,再到主存,然后是磁盘,最后是磁带,速度越来越慢,但价...
  • wordwarwordwar
  • wordwarwordwar
  • 2017年02月27日 12:56
  • 145

java关系映射之代码表示

所有的单向和双向在数据库中么有区别,但是在代码两个实体之间有区别。                                                                 ...
  • gpf1320253667
  • gpf1320253667
  • 2016年08月19日 23:04
  • 497
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:87-----hibernate的几种映射关系总结
举报原因:
原因补充:

(最多只允许输入30个字)