`
ixiaojin
  • 浏览: 20425 次
  • 性别: Icon_minigender_1
  • 来自: 大连
最近访客 更多访客>>
社区版块
存档分类
最新评论

Hibernate关联关系(2)

    博客分类:
  • Java
阅读更多

2、双向关联

 

双向关联在两端都知道对方的存在,同时也是由“一对多”和“多对一”两个关联关系组合而成的。在实现上也就是说,POJO的两个类里面都要有一个属性来保存对方的值。

 

public class Message {

    private int msgId;

    private String ttl;

    private String desc;

    private Date date;

private UserInfo user;

 

 

这时要在“多”的一端加上<many-to-one>节点,

<many-to-one name="user" class="xiaojin.hibernate.entity.UserInfo" column="usr_id" cascade="none"></many-to-one>

其中个属性

name:标明关联的一端

column:外键

cascade:是指级联操作

在“一“的一端配置:

<set name="messages" order-by="usr_id" cascade="all" inverse="true" >

          <key column="usr_id" />

          <one-to-many class="xiaojin.hibernate.entity.Message" />

 </set>

可以看到这里加了一个属性inverse="true"  意为反转,在双向关联中inverse="false" 的一方为主动方负责维护关联关系,默认值为false

在上述配置中,主动方在message一方,也就是说在message持久化过程中,message会主动去获取相关的user 对象的usr_id 作为自己的外键usr_id

 

关于级联操作:

级联操作是通过cascade来进行配置的。

从常识来讲对于级联的操作主动方都应该是以的一段的,举个例子来讲,当我们要删除一条message时是不允许其删除与之相关联的user的,然而当删除一个user必要将与其相关的message删除掉。在上面的配置中cascade="none"就是为了这个需求,当然在实际情况下还要同需求相联系来具体设置,hibernate的配置还是很灵活的。

 

测试方法:

    public static void saveMessagesAndUser(){

        UserInfo user= new UserInfo();

        user.setName("xiaofei");

        user.setPassword("xiaofei");

       

        Set<Message> msgs = new HashSet<Message>();

       

        Message msg = new Message();

        msg.setTtl("msg_xiaofei");

        msg.setDesc("desc");

    

        msgs.add(msg);

      

        user.setMessages(msgs);

        msg.setUser(user);

    

        save(user);       

}

 

注意上面加粗的两行,这时我们用的已经是双向关联了!

 

关于在应用中是应该使用单行关联还是双向关联:

hibernate的建议是使用双向关联。

关于一对多还是多对一:

多对一关联映射:在多的一端加入一个外键指向一的一端,它维护的关系是多指向一

一对多关联映射:在多的一端加入一个外键指向一的一端,它维护的关系是一指向多

也就是说一对多和多对一的映射策略是一样的,只是站的角度不同

分享到:
评论

相关推荐

    hibernate关联关系2

    在本项目中,"hibernate关联关系2"是一个关于使用Hibernate框架处理数据库关联关系的实战案例。Hibernate是一个流行的开源对象关系映射(ORM)工具,它允许开发人员使用Java对象来操作数据库,极大地简化了数据库...

    Hibernate关联关系

    ### Hibernate关联关系详解 在Java开发领域中,Hibernate作为一个强大的对象关系映射(ORM)框架,为开发者提供了方便地操作数据库的方式。通过将Java对象与数据库表进行映射,Hibernate大大简化了数据持久化层的...

    Hibernate 关联关系解除

    一、Hibernate关联关系介绍 在Hibernate中,关联关系主要包括以下几种: 1. 一对一(OneToOne):一个实体对应另一个实体的唯一实例。 2. 一对多(OneToMany):一个实体可以与多个其他实体相关联。 3. 多对一...

    hibernate关联关系总结

    Hibernate关联关系是Java持久化框架Hibernate中的核心概念,它允许我们在数据库中建立对象之间的关系映射,以便在程序中操作对象时,可以自动处理与数据库的交互。本篇将深入探讨Hibernate的四种主要关联关系:一对...

    Hibernate关联关系练习【全】

    总之,Hibernate关联关系是理解其工作原理的关键,它使得Java对象和数据库记录之间的映射变得简单。通过练习,你可以掌握如何配置和使用这些关系,以及如何进行相关的查询操作,从而提升你的开发效率和代码质量。...

    hibernate关联关系实例

    在这个“hibernate关联关系实例”中,我们将深入探讨四种基本的关联关系:一对一(One-to-One)、一对多(One-to-Many)、多对一(Many-to-One)以及多对多(Many-to-Many),同时也会涉及Hibernate查询语言(HQL)...

    hibernate关联映射详解

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

    Hibernate 关联关系映射分类

    在深入探讨Hibernate关联关系映射分类之前,我们首先简要回顾一下Hibernate框架的基本概念。Hibernate是一种持久层框架,主要用于Java应用程序中的对象关系映射(ORM),它能够将面向对象的数据模型转换为数据库中的...

    Hibernate的关联关系映射图解

    Hibernate4中映射关系图解。

    hibernate一对一关联关系

    在实体类之间,Hibernate支持多种关联关系,包括一对一(One-to-One)、一对多(One-to-Many)和多对多(Many-to-Many)。本资源主要探讨的是“hibernate一对一关联关系”。 一对一关联关系在现实世界中很常见,...

    hibernate关联关系映射

    "hibernate关联关系映射"是Hibernate的核心概念之一,它定义了如何在Java对象和数据库表之间建立关系。以下是对这个主题的详细讲解: 一、一对一关系映射(One-to-One) 一对一关系是指一个实体对应另一个实体的...

    hibernate各种常用关联关系的基本配置

    本篇文章将深入探讨Hibernate中常见的几种关联关系及其基本配置。 一、一对一(OneToOne)关联 在一对一关联中,一个实体对象只对应数据库中的一个记录。配置方式通常通过`@OneToOne`注解实现,可以设置`mappedBy`...

    Hibernate关联关系映射目录

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

    Hibernate关联关系配置

    ### Hibernate关联关系配置详解 #### 一、一对多与多对一关系配置 在软件开发过程中,实体之间的关联关系是常见的需求之一。其中,“一对多”与“多对一”的关系尤为常见,这类关系通常用来表示实体之间的层级或...

    Hibernate关联关系映射.CHM

    Hibernate关联关系映射.CHM Hibernate文档相关

    HIbernate关联关系总结

    在Java的ORM(对象关系映射)框架Hibernate中,关联关系是将数据库中的表与Java对象之间建立联系的重要机制。本篇文章将详细讲解Hibernate的两种单向关联关系:单向1-N关联和单向N-1关联。 1. **单向1-N关联** 在...

    Hibernate关联关系总结

    本篇文章将深入探讨Hibernate中的三种主要关联关系:一对一、一对多和多对多。 **一对一关联(One-to-One)** 一对一关联在现实生活中很常见,例如一个人只有一个身份证。在Hibernate中,这种关联可以通过`@...

    Hibernate关联关系疑问

    这篇博客"Hibernate关联关系疑问"可能探讨了在使用Hibernate处理对象关系映射(ORM)时遇到的一些关联问题。在ORM中,关联关系是数据库表之间的连接,如一对一、一对多、多对一和多对多关系。 1. **一对一关联...

    Hibernate关联关系.doc

    2. **一对多的单向关联关系** 与多对一相反,一对多关联表示一个实体可以与多个其他实体相关联,但每个其他实体只与一个该实体相关。以同样客户和订单的例子,客户可以有多个订单,但每个订单只属于一个客户。在...

Global site tag (gtag.js) - Google Analytics