`

Hibernate 实体关联关系映射----总结

    博客分类:
  • SSH
阅读更多

Hibernate关联关系映射目录

├─单向关联
│  ├─  一对一外键单向关联
│  ├─  一对一主键单向关联
│  ├─  一对一连接表单向关联
│  ├─  一对多外键单向关联
│  ├─  一对多连接表单向关联
│  ├─  多对一外键单向关联
│  ├─  多对一连接表单向关联
│  └─  多对多单向关联
└─双向关联
    ├─  一对一外键双向关联
    ├─  一对一主键双向关联
    ├─  一对一连接表双向关联
    ├─  一对多外键双向关联
    ├─  一对多连接表双向关联
    └─  多对多双向关联

Hibernate 一对一外键单向关联

<hibernate-mapping> 
        <class name="com.lavasoft.dx._1_1_fk.Person11fk" table="PERSON_11fk"> 
                <id name="personid"> 
                        <generator class="identity"/> 
                </id> 
                <property name="name"/> 
                <property name="age"/> 
                <!--用来映射关联PO column是Address在该表中的外键列名,增加unique变成“1-1”--> 
                <many-to-one name="address11fk" column="addressId" unique="true"/> 
        </class> 
</hibernate-mapping>
 

Hibernate 多对多单向关联
<hibernate-mapping> 
    <class name="com.lavasoft.dx._n_n.Personnn" table="PERSON_nn"> 
        <id name="personid"> 
            <generator class="identity"/> 
        </id> 
        <property name="name"/> 
        <property name="age"/> 
        <!--映射集合属性,join_1ntab是连接表表名--> 
        <set name="addresses" 
             table="join_nn" 
                > 
            <!--“column="personid"”确定PERSON_1ntab表关联到连接表的外键列名--> 
            <key column="personid"/> 
            <!--“column="addressid"”关联PERSON_1ntab表的Address1ntab对象的id在连接表中的列名--> 
            <many-to-many 
                    column="addressid" 
                    class="com.lavasoft.dx._n_n.Addressnn"/> 
        </set> 
    </class> 
</hibernate-mapping> 
 
Hibernate 一对一外键双向关联
<?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> 
  <class name="entity.Person" table="person"> 
    <id name="id" type="java.lang.Long"> 
      <column name="id" /> 
      <generator class="identity" /> 
    </id> 
    <property name="name" type="java.lang.String"> 
      <column name="name" length="24" not-null="true"> 
        <comment>姓名</comment> 
      </column> 
    </property> 
    <one-to-one name="address" cascade="all" /> 
  </class> 
</hibernate-mapping>
 
<?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> 
  <class name="entity.Address" table="address" catalog="testdb"> 
    <id name="id" type="java.lang.Long"> 
      <column name="id" /> 
      <generator class="identity" /> 
    </id> 
    <property name="detail" type="java.lang.String"> 
      <column name="detail" length="120" not-null="true"> 
        <comment>详细地址</comment> 
      </column> 
    </property> 
    <many-to-one name="person" class="entity.Person" 
      fetch="select" unique="true"> 
      <column name="personid"> 
        <comment>人的ID</comment> 
      </column> 
    </many-to-one> 
  </class> 
</hibernate-mapping>
 
Hibernate 一对一主键双向关联
<?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> 
  <class name="entity.Person" table="person"> 
    <id name="id" type="java.lang.Long"> 
      <column name="id" /> 
      <generator class="identity" /> 
    </id> 
    <property name="name" type="java.lang.String"> 
      <column name="name" length="24" not-null="true"> 
        <comment>姓名</comment> 
      </column> 
    </property> 
    <!-- cascade="all":在保存person对象的时候,级联保存person对象关联的address对象    --> 
    <one-to-one name="address" cascade="all" /> 
  </class> 
</hibernate-mapping>
 
<?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> 
  <class name="entity.Address" table="address" catalog="mydb"> 
    <id name="id" type="java.lang.Long"> 
      <column name="id" /> 
      <!-- class="foreign": 一对一主键映射中,使用另外一个相关联的对象的标识符 --> 
      <generator class="foreign"> 
        <param name="property">person</param> 
      </generator> 
    </id> 
    <property name="detail" type="java.lang.String"> 
      <column name="detail" length="120" not-null="true"> 
        <comment>详细地址</comment> 
      </column> 
    </property> 
    <!-- 表示在address表存在一个外键约束,外键参考相关联的表person --> 
    <one-to-one name="person" constrained="true" /> 
  </class> 
</hibernate-mapping>
 
Hibernate 一对一连接表双向关联
<hibernate-mapping> 
    <class name="com.lavasoft.sx._1_1_tab.Person11tab_sx" table="PERSON_11tab_sx"> 
        <id name="personid"> 
            <generator class="identity"/> 
        </id> 
        <property name="name"/> 
        <property name="age"/> 
        <join table="join_11tab_sx" 
              optional="true"> 
            <key column="personid" 
                 unique="true"/> 
            <many-to-one name="address11tab_sx" 
                         column="addressid" 
                         not-null="true" 
                         unique="true"/> 
        </join> 
    </class> 
</hibernate-mapping> 
 
<hibernate-mapping> 
    <class name="com.lavasoft.sx._1_1_tab.Address11tab_sx" table="ADDRESS_11tab_sx"> 
        <id name="addressid"> 
            <generator class="identity"/> 
        </id> 
        <property name="addressdetail"/> 
        <join table="join_11tab_sx" 
              optional="true" 
              inverse="true"> 
            <key column="addressid" 
                 unique="true"/> 
            <many-to-one name="person11tab_sx" column="personid" 
                         not-null="true" unique="true"/> 
        </join> 
    </class> 
</hibernate-mapping> 
 
Hibernate 一对多外键双向关联
hibernate-mapping> 
    <class name="com.lavasoft.sx._1_n_fk.Person1nfk_sx" table="PERSON_1nfk_sx"> 
        <id name="personid"> 
            <generator class="identity"/> 
        </id> 
        <property name="name"/> 
        <property name="age"/> 
        <!--映射集合属性,关联到持久化类--> 
        <set name="addresses" inverse="true" cascade="all"> 
            <!--column用于指定外键列名--> 
            <key column="personid" not-null="true"/> 
            <!--映射关联类--> 
            <one-to-many class="com.lavasoft.sx._1_n_fk.Address1nfk_sx"/> 
        </set> 
    </class> 
</hibernate-mapping> 
 
<hibernate-mapping> 
    <class name="com.lavasoft.sx._1_n_fk.Address1nfk_sx" table="ADDRESS_1nfk_sx"> 
        <id name="addressid"> 
            <generator class="identity"/> 
        </id> 
        <property name="addressdetail"/> 
        <!--映射关联属性,column属性指定外键列名--> 
        <many-to-one name="person1nfk" 
                     class="com.lavasoft.sx._1_n_fk.Person1nfk_sx" 
                     fetch="select" 
                     cascade="save-update"> 
            <column name="personid" not-null="true"/> 
        </many-to-one> 
    </class> 
</hibernate-mapping> 
 
Hibernate 一对多连接表双向关联
<hibernate-mapping> 
    <class name="com.lavasoft.sx._1_n_tab.Person1ntab_sx" table="PERSON_1ntab_sx"> 
        <id name="personid"> 
            <generator class="identity"/> 
        </id> 
        <property name="name"/> 
        <property name="age"/> 
        <!--映射集合属性,关联到持久化类--> 
        <!--table="join_1ntab_sx"指定了连接表的名字--> 
        <set name="addresses" 
             table="join_1ntab_sx" 
             cascade="all"> 
            <!--column="personid"指定连接表中关联当前实体类的列名--> 
            <key column="personid" not-null="true"/> 
            <!--unique="true"表示当前实体类是"1",不是"n"--> 
            <many-to-many column="addressid" 
                          unique="true" 
                          class="com.lavasoft.sx._1_n_tab.Address1ntab_sx"/> 
        </set> 
    </class> 
</hibernate-mapping> 
 
<hibernate-mapping> 
    <class name="com.lavasoft.sx._1_n_tab.Address1ntab_sx" 
           table="ADDRESS_1ntab_sx"> 
        <id name="addressid"> 
            <generator class="identity"/> 
        </id> 
        <property name="addressdetail"/> 
        <!--映射关联属性,column属性指定外键列名--> 
        <join   table="join_1ntab_sx" 
                inverse="true" 
              optional="true"> 
            <key column="addressid"/> 
            <many-to-one name="person1ntab_sx" 
                         column="personid" 
                         cascade="all" 
                         not-null="true"/> 
        </join> 
    </class> 
</hibernate-mapping> 
 
Hibernate 多对多双向关联
<hibernate-mapping> 
    <class name="com.lavasoft.sx._n_n.Personnn_sx" table="PERSON_nn_sx"> 
        <id name="personid"> 
            <generator class="identity"/> 
        </id> 
        <property name="name"/> 
        <property name="age"/> 
        <!--映射集合属性,关联到持久化类--> 
        <!--table="join_1ntab_sx"指定了连接表的名字--> 
        <set name="addresses" 
             table="join_nn_sx" 
             cascade="all"> 
            <!--column="personid"指定连接表中关联当前实体类的列名--> 
            <key column="personid" not-null="true"/> 
            <!--column="addressid"是连接表中关联本实体的外键--> 
            <many-to-many column="addressid" 
                          class="com.lavasoft.sx._n_n.Addressnn_sx"/> 
        </set> 
    </class> 
</hibernate-mapping> 
 
<hibernate-mapping> 
    <class name="com.lavasoft.sx._n_n.Addressnn_sx" 
           table="ADDRESS_nn_sx"> 
        <id name="addressid"> 
            <generator class="identity"/> 
        </id> 
        <property name="addressdetail"/> 
        <!--table="join_nn_sx"是双向多对多的连接表--> 
        <set name="persons" 
             inverse="true" 
             table="join_nn_sx"> 
            <!--column="addressid"是连接表中关联本实体的外键--> 
            <key column="addressid"/> 
            <many-to-many column="personid" 
                          class="com.lavasoft.sx._n_n.Personnn_sx"/> 
        </set> 
    </class> 
</hibernate-mapping> 
 
分享到:
评论

相关推荐

    Hibernate实体关联关系映射--学习总结.pdf

    Hibernate实体关联关系映射--学习总结.pdf

    Hibernate_实体关联关系映射--学习总结

    Hibernate 实体关联关系映射 学习总结 把一对一 一对多 单向 双向 主键 外键 链接表等讲的比较清楚

    hibernate实体关联关系映射

    Hibernate实体关联关系映射--学习总结,让同仁们更好的学习Hiebernate

    Hibernate实体关联速查表

    本速查表没有打成CHM! Hibernate实体映射表实用性较强! 希望大家喜欢!

    hibernate的表关联操作-hibernate02

    hibernate的表关联操作,通过映射关系操作实体类增删改查数据库-hibernate02

    Hibernate实体映射

    :Hibernate有两种映射实体一对一关联关系的实现方式:共享主键方式和唯一外键方式。 共享主键方式: 所谓共享主键方式就是限制两个数据表的主键使用相同的值

    Hibernate_Annotation关联映射

    Hibernate Annotation几种关联映射 一对一(One-To-One) 使用@OneToOne注解建立实体Bean之间的一对一关联。一对一关联有三种情况:(1).关联的实体都共享同样的主键,(2).其中一个实体通过外键关联到另一个实体的主键...

    hibernate学习笔记

    hibernate多对一关联映射(Hibernate_Many2One) 7 hibernate一对一主键关联映射(单向关联Person----&gt;IdCard) 8 hibernate一对一主键关联映射(双向关联Person&lt;----&gt;IdCard) 9 hibernate一对一唯一外键关联映射...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

    第15章 映射实体关联关系  15.1 映射一对一关联  15.1.1 按照外键映射   15.1.2 按照主键映射  15.2 映射单向多对多关联  15.3 映射双向多对多关联关系  15.3.1 关联两端使用元素  15.3.2 在inverse端使用...

    J2EE三大框架_笔记_a

    17-Hibernate实体映射笔记 18-Hibernate复合主键笔记 20-22Hibernate_容器映射技术笔记 23-26Hibernate数据关联技术笔记 27-32Hibernate数据关联技术_1vs1应用案例_笔记 33-37Hibernate1对N案例笔记 38-43Hibernate...

    J2EE框架_笔记_c

    17-Hibernate实体映射笔记 18-Hibernate复合主键笔记 20-22Hibernate_容器映射技术笔记 23-26Hibernate数据关联技术笔记 27-32Hibernate数据关联技术_1vs1应用案例_笔记 33-37Hibernate1对N案例笔记 38-43Hibernate...

    J2EE框架_笔记_b

    17-Hibernate实体映射笔记 18-Hibernate复合主键笔记 20-22Hibernate_容器映射技术笔记 23-26Hibernate数据关联技术笔记 27-32Hibernate数据关联技术_1vs1应用案例_笔记 33-37Hibernate1对N案例笔记 38-43Hibernate...

    传智播客李勇hibernate源码1-20课

    传智播客李勇hibernate源码1-20课,目录如下:01_hibernate介绍与动手入门体验;02_hibernate入门案例的细节分析; 03_hibernate入门案例的代码优化; 04_Session接口及get|... 20_一对一外键关联关系的映射与原理分析

    hibernate单向一对多关联映射(注解版)

    hibernate单向一对多关联映射(注解版)

    hibernate实体关联

    详细描述了hibernate3中的实体映射

    实体类对应关系处理hibernate

    自己根据课本总结的使用hibernate时,实体类间映射文件即*.hbm.xml文件的写法。如果你正在学习hibernate,保证会对你有所帮助。

    Hibernate_3.2.0_符合Java习惯的关系数据库持久化

    HIBERNATE - 符合Java习惯的关系数据库持久化 Hibernate参考文档 3.2 -------------------------------------------------------------------------------- 目录 前言 1. 翻译说明 2. 版权声明 1. Hibernate...

    javaEE框架笔记,识货人下

    17-Hibernate实体映射笔记.pdf 18-Hibernate复合主键笔记.pdf 19-Hibernate实体层设计笔记.pdf 2-JSP+JDBC_真分页(基于Oracle数据库分页)笔记.pdf 20-22Hibernate_容器映射技术笔记.pdf 23-26Hibernate数据关联技术...

    hibernate annotation 中文文档

    2.2.5. 映射实体Bean的关联关系 2.2.5.1. 一对一(One-to-one) 2.2.5.2. 多对一(Many-to-one) 2.2.5.3. 集合类型 2.2.5.4. 用cascading实现传播性持久化(Transitive persistence) 2.2.5.5. 关联关系获取 2.2.6. 映射...

Global site tag (gtag.js) - Google Analytics