`

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是目前广泛使用的持久层框架,它采用对象关系映射(ORM)技术,将Java对象映射到关系型数据库中。在使用Hibernate进行数据持久化...总之,系统学习和实践Hibernate实体关联映射是每一位Java开发者必备的技能。

    hibernate实体关联关系映射

    ### Hibernate实体关联关系映射详解 #### 一、引言 Hibernate作为一种强大的对象关系映射(Object Relational Mapping,简称ORM)框架,在Java开发领域扮演着极其重要的角色。它不仅简化了持久化层的开发工作,...

    hibernate的关联关系映射

    总结来说,Hibernate的关联关系映射允许开发者灵活地处理对象之间的复杂关系,通过配置文件映射到数据库表结构。无论是一对一还是多对一/一对多,都可以根据业务需求选择合适的关联类型,并通过Java代码和XML配置...

    Hibernate4(关系映射-事务-原理-性能和二级缓存-最佳实践)

    Hibernate是一个开源的对象关系映射(ORM)框架,用于Java语言开发。它提供了Java应用程序与关系型数据库之间的映射关系,大大简化了数据库编程。Hibernate 4是该框架的一个版本,它涵盖了关系映射、事务处理、原理...

    hibernate-jpa-2.1-api-1.0.0.final.jar.zip

    其中,Hibernate作为一款功能强大的ORM框架,极大地简化了Java对象与数据库表之间的映射关系处理。而JPA(Java Persistence API)是Java EE规范的一部分,为ORM提供了标准的接口。`hibernate-jpa-2.1-api-1.0.0....

    Spring+Hibernate一对多关联映射---部门与员工表的级联添加

    总结来说,Spring和Hibernate结合使用的一对多关联映射,关键在于配置正确的映射文件,设定级联策略,并在业务逻辑中利用这些配置进行数据的增删改查操作。理解并掌握这一技术,能有效提升开发效率,减少手动处理...

    Hibernate ORM 对象关联关系映射初解

    8. 多对多双向中间实体关联关系映射:当需要为多对多关系引入额外的信息或者业务逻辑时,可以创建一个中间实体,并映射两个实体与这个中间实体的关系。 9. 继承关联关系映射:Hibernate支持三种继承映射策略,分别...

    Hibernate_关联关系映射配置

    本教程将详细讲解Hibernate中的关联关系映射配置,帮助你理解和掌握如何在Hibernate中设置不同类型的关联。 一、一对一(One-to-One)关联 在现实世界中,两个实体之间可能存在一对一的关系,例如一个人只有一个...

    Hibernate 关联关系映射分类

    一对多关联表示一个实体可以与多个其他实体相关联,但在这些多个实体中,每个实体只能与一个实体关联。一对多关联同样可以分为单向关联和双向关联。 #### 单向关联 - **多对一单向关联**:在这种关联中,多个实体...

    Hibernate关联映射总结

    ### Hibernate关联映射总结 #### 一、基础知识 在探讨Hibernate中的关联映射之前,我们需要先理解几个基本概念,这将有助于我们更好地理解和应用这些关联映射。 - **主键**(Primary Key):主键是用来唯一标识一...

    Hibernate one-to-many / many-to-one关系映射

    总结,Hibernate的one-to-many和many-to-one关系映射是数据库对象关联的基础,理解和熟练掌握它们能帮助开发者更高效地设计和实现Java持久化层。通过合理的配置和实践,可以构建出高性能、易于维护的数据访问层。

    Hibernate关联关系映射目录

    ### Hibernate关联关系映射 #### 一、单向关联 单向关联指的是对象之间的关联关系只在一个方向上存在,也就是说这种关联关系仅在一个类中表示出来,在另一个类中不体现这种关联。 ##### 1. 一对一外键单向关联 ...

    Spring+Hibernate 多对多关联映射---教师与学生表的级联增删改查

    本篇将深入探讨如何在Spring和Hibernate中实现多对多关联映射,并通过一个具体的教师与学生表的级联增删改查实例来阐述这一过程。 首先,多对多关联是数据库设计中的一种关系类型,表示一个实体可以与多个其他实体...

    hibernate关联关系映射

    总结,Hibernate的关联关系映射是其强大的功能之一,通过合理的配置,我们可以轻松地在Java对象和数据库表之间建立复杂的关系,实现对象的持久化。理解并熟练运用这些映射方式,对于提升Java应用的数据管理效率至关...

    Hibernate关联映射-one to one单向外键关联

    本话题主要探讨的是Hibernate中的一种关联映射方式——一对一(One-to-One)单向外键关联。这种关联模式通常用于两个实体之间存在唯一对应的关系,例如一个用户对应一个唯一的账户。 在Hibernate中,一对一关联可以...

    hibernate 对象关系映射总结hibernate 对象关系映射总结

    本文详细介绍了Hibernate中的几种常见对象关系映射类型,包括一对一、一对多和多对多关联,并通过具体的代码示例进行了说明。这些基本的映射方式为开发者提供了灵活的解决方案,使得开发者可以根据不同的业务需求...

    hibernate多对多关联映射

    在Java的持久化框架Hibernate中,多对多关联映射是一种常见的关系数据库模型映射方式,用于处理两个实体之间存在多个实例互相关联的情况。本文将深入探讨Hibernate如何实现多对多关联映射,并通过实际例子解析相关...

    多对多的关联映射--基于SSH开发

    总结来说,SSH框架中的多对多关联映射涉及数据库设计、Hibernate配置、Spring事务管理和Struts的请求处理。在实际项目中,开发者需要综合运用这些工具,以实现灵活且高效的多对多关系操作。这包括创建、更新关联关系...

Global site tag (gtag.js) - Google Analytics