`

Hibernate 关联映射

阅读更多

Hibernate 关联映射

单向 many-to-one 关联   

在有外键的表对应的实体里加上一方实体作为字段,在 xml 里加上 many-to-one

双向 one-to-many 关联

在一的一方加上多的 set 集合作为字段 , xml 里加上 one-to-many

双向 many-to-many 关联

 

多对一单向关联(和关系数据库的外键参照关系匹配

示例: Item   SubItem

Public class Item{

         private Integer itemId;

         private String itemName;

         private String itemCode;

}

 

 

Public class SubItem{                            subitem 表中 itemid item 表的外键

         private Integer subId;

         private String subName;

         private Item item;

         private Integer subCode;

}

 

Item.hbm.xml  item 表中的字段一一对应即可。

< hibernate-mapping >

    < class name = "com.pojo.Item" table = "item" catalog = "gdev" >

        < id name = "itemId" type = "java.lang.Integer" >

            < column name = "itemid" />

            < generator class = "sequence" >

            < param name = "sequence" > sequence_ip_info </ param >

            </ generator >

        </ id >

        < property name = "itemName" type = "java.lang.String" >

            < column name = "itemname" length = "32" not-null=”true” />

        </ property >

        < property name = "itemCode" type = "java.lang.String" >

            < column name = "itemcode”  length=”32” not-null=”true” />

        </ property >

     </ class >

</ hibernate-mapping >

SubItem.hbm.xml

< hibernate-mapping >

    < class name = "com.pojo.SubItem" table = "subitem" catalog = "gdev" >

        < id name = "subId" type = "java.lang.Integer" >

            < column name = "subid" />

            < generator class = "sequence" >

            < param name = "sequence" > sequence_ip_info </ param >

            </ generator >

        </ id >

        < property name = "subName" type = "java.lang.String" >

            < column name = "subname" length = "32" not-null=”true” />

        </ property >

        < property name = "subCode" type = "java.lang.String" >

            < column name = "subcode”  length=”32” not-null=”true” />

        </ property >

<many-to-one name="item" column=”itemid” class=”com.pojo.Item”/>

     </ class >

</ hibernate-mapping >

 

注解: <many-to-one> 元素建立了 item 属性和 subitem 表的外键 itemid 的映射关系,实现了可以通过 many 方得到 one 方相关的数据。

 

 

 

双向一对多关联(有外键关系)

如果想得到给定的 Item 对象所关联的 subItem 对象怎么办呢?

接上边

Item 实体里加上

private Set subItems=new HashSet();

get/set() 方法

 

Item.hbm.xml 里边加入

<set name=”subItems” >

         <key column=”itemid”/>

         <one-to-many class=”com.pojo.SubItem”/>

</set>

 

 

如果要删除一个 Item 元素,那么相关的 SubItem 元素也要删除,所以加上

<set name=”subItems”   cascade=”all”   inverse=”true” >

         <key column=”itemid”/>

         <one-to-many class=”com.pojo.SubItem”/>

</set>

inverse : 表示关系的维护由谁来执行。 true 表示不由自己执行,而由对应的另外一方执行。

Cascade : 表示是否进行级联操作。 all: 表示所有的操作都进行级联。

 

 

双向多对多关联 ( 在数据库设计时,要加一个表 tea_stu_relation )

必须把其中一端的属性的 inverse 设为 true, 关联的两端都可以使用 <set> 元素。

例如:一个老师可以教多个学生,一个学生要上多个老师的课。

Student

private Set teachers=new HashSet();

 

Teacher

private Set students=new HashSet();

 

Teacher.hbm.xml

<set name=”students”   table=” tea_stu_relation”   inverse=”true” cascade=”all”>

<key column=”teaid”/>

<many-to-many class=”com.hibernate3.pojo.student” column=”stuid”/>

</set>

 

Student.hbm.xml

<set name=”teachers”  table=” tea_stu_relation” >

<key column=”stuid”/>

<many-to-many class=”com.hibernate3.pojo.Teacher” column=”teaid”/>

</set>

 

 

分享到:
评论

相关推荐

    hibernate关联映射详解

    hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,包含4个说明文档,分别详细解说了hibernate关联映射的...

    hibernate关联映射实例

    本文将深入探讨“hibernate关联映射实例”中的关键知识点,包括一对多、多对多和继承映射,这些都是Hibernate中至关重要的概念。 1. **一对多关联映射**: 在现实世界中,一个实体可能会与多个其他实体相关联,...

    hibernate关联映射的作用和常用属性解释

    ### Hibernate关联映射的作用与常用属性详解 #### 关联映射概述 在对象关系映射(Object Relational Mapping,简称ORM)技术中,Hibernate作为Java领域内非常成熟且功能强大的框架之一,它允许开发者将Java类映射...

    Hibernate关联映射

    在 Hibernate 映射中,需要使用 `one-to-one` 元素,并设置 `constrained="true"`,表明该类的主键由关联类生成。 3. Hibernate 一对一连接表单向关联: 这种关联方式是通过额外的连接表来实现一对一关系的。连接...

    Hibernate关联映射.rar

    本教程“Hibernate关联映射.rar”聚焦于Hibernate中的关联映射,特别是多对一和一对多的关系映射,非常适合初学者了解和实践。 首先,我们要理解什么是关联映射。在数据库中,表与表之间存在各种关系,如一对一、一...

    hibernate 全面学习->hibernate 关联映射学习

    总的来说,这个压缩包提供了丰富的Hibernate关联映射的学习资源,涵盖了从基础到进阶的各种关联类型。通过学习这些示例,你将能够熟练掌握如何在Java项目中使用Hibernate进行数据持久化,并灵活地处理各种数据库关系...

    hibernate 关联映射(一) many to one

    本文将深入探讨“Hibernate关联映射中的Many-to-One关系”。 Many-to-One关联是现实世界中常见的关系类型,比如一个学生可以对应多个课程,而一个课程可能被多个学生选修。在数据库中,这通常表现为一对多(One-to-...

    hibernate关联映射

    hibernate关联映射是Hibernate框架中的一个重要概念,它用于在Java对象模型和数据库表之间建立关系,使得数据操作更加方便。以下将详细介绍各种类型的关联映射: 1. **单向N-1关联(无连接表)** 在这种关联中,一...

    hibernate关联映射详解SSH 多对多,一对多关系对象映射

    在Java的持久化框架Hibernate中,关联映射是至关重要的概念,它允许我们将数据库中的表关系映射到对象之间的关系。SSH(Struts、Spring、Hibernate)是经典的Java Web开发框架,其中Hibernate负责数据访问层,提供了...

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

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

    hibernate 关联映射(二) one to one(单向)

    本篇文章将深入探讨Hibernate中的关联映射,特别是One-to-One(一对一)关联,这是一种表示两个实体之间一对一关系的映射方式。我们将通过源码分析和实际例子来理解其工作原理。 ### 一、One-to-One关联概述 在...

    hibernate 关联映射(三) one to one(双向)

    在Java的持久化框架Hibernate中,关联映射是核心特性之一,它允许我们将数据库中的表关系映射到对象之间的关系。本篇将深入探讨一种特殊的关联映射方式——一对一(One to One)映射,特别是在双向关联的情况下的...

    Hibernate一对一主键关联映射(双向关联)

    在Java的持久化框架Hibernate中,一对一(One-to-One)关联映射是一种常见的关系数据库模型映射方式。这种关联通常发生在两个实体之间,且每个实体都只有一个对应的实例。本篇文章将详细探讨双向一对一主键关联映射...

Global site tag (gtag.js) - Google Analytics