`

hibernate 关联配置之一对多

阅读更多

一对多是比较普遍的映射关系,比如班级与同学关系,消费者预订单关系,某个人的留言......

一对多:从班级的角度来看一个班级可以有很多个同学。

多对一:从学生的角度来看多个同学可以对应一个班级。

根据实际情况也有不同的映射方式:

一."一方"的java类中含有"多方"对象的set集合,而"多方"的java类中含有"一方"的id而不是一个对象。

    java类图:

    数据库表设计,在message表中定义一个外键关联student:

  

 

student.hbm.xml中:

    <!--
           将 lazy 设置为false 表面查询一个student的时候查询该student的所有message
           lazy默认为 true
       -->

  

<set name="messages" lazay="false">
          <key column="stu_id"></key>
          <one-to-many class="showGoal.model.Target"/>

   </set>

 

 

message.hbm.xml中无需特别指定。

 

二."一方"的java类中含有"多方"对象的set集合,而"多方"的java类中含有"一方"的i一个对象。

    java类图:

  

  
数据库表的设计不变:

 

  student.hbm.xml:

  同上:  

   <set name="messages" lazay="false">
          <key column="stu_id"></key>
          <one-to-many class="showGoal.model.Target"/>
   </set>

  message.hbm.xml:

 

<many-to-one name="student"   class="xxx.student" 
                         column="stu_id" cascade="save-update">
</many-to-one>   

 

  三.这种情况比较特殊就是自身的一对多关联。比如message与message的回复,就是自身的一对多关联

    

<set name="messagesReply" cascade="all" inverse="true">
       <key column="id"></key>
       <one-to-many class="xxxx.Message"/>
</set>
            
<many-to-one name="parentMeeage" class="xxxs.Category" column="parent_id">
</many-to-one>

 

   

注:1.<set>元素的lazy属性,默认为true。表示加载student 的时候不会加载student的message集合。

                    false,则相反。

        2.<set>元素的cascade属性:

         是用来说明数据库中两个表之间相互关系(一对一,一对多,多对多)中,当对主对象进行某种操作时,  是 否对其关联的从对象也作类似的操作(比如有对象 Department和Employee,它们之间是一对多的关系,当保存Department时,其对应的Employee是否也相应的保存),常见的 级联(Cascade)有:

       (1)none:在保存,删除或修改当前对象时,不对其附属对象(关联对象)进行级联操作。它是默认值。
       (2)save-update:在保存,更新当前对象时,级联保存,更新附属对象(临时对象,游离对象)。
       (3)delete:在删除当前对象时,级联删除附属对象。
       (4)all:所有情况下均进行级联操作,即包含save-update和delete等等操作。
       (5)delete-orphan:删除此对象的同时删除与当前对象解除关系的孤儿对象(仅仅使用于一对多关联关系 中)。

       当然也可以在数据库中定义外键的时候设置删除时,更新时相应的操作来等效的实现cascade的操作

 

   小生菜鸟一个,如果大神们对博客有什么意尽管说出来,虚心接受。我会很高兴的哦大笑 谢了

 

      

 


 
 

 

  • 大小: 10.6 KB
  • 大小: 6.7 KB
  • 大小: 10.5 KB
分享到:
评论

相关推荐

    Hibernate Annotations 中文文档

    多对一(Many-to-one) 2.2.5.3. 集合类型 2.2.5.4. 用cascading实现传播性持久化(Transitive persistence) 2.2.5.5. 关联关系获取 2.2.6. 映射复合主键与外键 2.2.7. 映射二级表(secondary tables) 2.3. 映射...

    Hibernate教程

    8.5.1. 一对多(one to many) /多对一( many to one) 8.5.2. 一对一(one to one) 8.5.3. 多对多(many to many) 9. 组件(Component)映射 9.1. 依赖对象(Dependent objects) 9.2. 在集合中出现的依赖...

    最全Hibernate 参考文档

    7.5.1. 一对多(one to many) /多对一( many to one) 7.5.2. 一对一(one to one) 7.5.3. 多对多(many to many) 8. 组件(Component)映射 8.1. 依赖对象(Dependent objects) 8.2. 在集合中出现的依赖对象 ...

    Hibernate注释大全收藏

    这种策略支持双向的一对多关联,但不支持 IDENTIFY 生成器策略,因为ID必须在多个表间共享。一旦使用就不能使用AUTO和IDENTIFY生成器。 每个类层次结构一张表 @Entity @Inheritance(strategy=InheritanceType....

    hibernate 教程

    值集合和多对多关联(Collections of Values and Many-To-Many Associations) 6.4. 一对多关联(One-To-Many Associations) 6.5. 延迟初始化(延迟加载)(Lazy Initialization) 6.6. 集合排序(Sorted ...

    hibernate annotation 中文文档

    多对一(Many-to-one) 2.2.5.3. 集合类型 2.2.5.4. 用cascading实现传播性持久化(Transitive persistence) 2.2.5.5. 关联关系获取 2.2.6. 映射复合主键与外键 2.2.7. 映射二级表(secondary tables) 2.3. 映射查询 ...

    Hibernate3的帮助文档

    8.5.1. 一对多(one to many) /多对一( many to one) 8.5.2. 一对一(one to one) 8.5.3. 多对多(many to many) 9. 组件(Component)映射 9.1. 依赖对象(Dependent objects) 9.2. 在集合中出现的依赖...

    hibernate3.04中文文档.chm

    8.5.1. 一对多(one to many) /多对一( many to one) 8.5.2. 一对一(one to one) 8.5.3. 多对多(many to many) 9. 组件(Component)映射 9.1. 依赖对象(Dependent objects) 9.2. 在集合中出现的依赖...

    hibernate 框架详解

    一对多(one to many) /多对一( many to one) 8.5.2. 一对一(one to one) 8.5.3. 多对多(many to many) 9. 组件(Component)映射 9.1. 依赖对象(Dependent objects) 9.2. 在集合中出现的依赖对象 ...

    Hibernate3+中文参考文档

    7.5.1. 一对多(one to many) /多对一( many to one) 7.5.2. 一对一(one to one) 7.5.3. 多对多(many to many) 8. 组件(Component)映射 8.1. 依赖对象(Dependent objects) 8.2. 在集合中出现的依赖对象 ...

    夏昕.深入浅出Hibernate

    本书内容深入浅出,先讲述持久层设计与ORM,再由Hibernate概述、Hibernate基础Hibernate高级特性顺序展开,直至Hibernate实战,重点讲述了 Hibernate的基础语法、基础配置、O/R映射、数据关联、数据检索、HQL实用...

    hibernate

    值集合和多对多关联(Collections of Values and Many-To-Many Associations) 6.4. 一对多关联(One-To-Many Associations) 6.5. 延迟初始化(延迟加载)(Lazy Initialization) 6.6. 集合排序(Sorted ...

    hibernate annotation帮助文档

    多对一(Many-to-one) 2.2.5.3. 集合类型 2.2.5.4. 用cascading实现传播性持久化(Transitive persistence) 2.2.5.5. 关联关系获取 2.2.6. 映射复合主键与外键 2.2.7. 映射二级表(secondary tables) 2.3. 映射...

    ssh(structs,spring,hibernate)框架中的上传下载

    第3~9行定义了一个数据源,其实现类是apache的BasicDataSource,第11~25行定义了Hibernate的会话工厂,会话工厂类用Spring提供的LocalSessionFactoryBean维护,它注入了数据源和资源映射文件,此外还通过一些键值对...

    精通Hibernate之映射继承关系(六)

    图14-11ClassD与ClassA为多对一多态关联关系ClassA、ClassB和ClassC构成了一棵继承关系树,如果继承关系树的根类对应一个表,或者每个类对应一个表,那么可以按以下方式映射ClassD的a属性:&lt;many-to-onename="a...

    低清版 大型门户网站是这样炼成的.pdf

    4.3.5 映射多对一单向关联关系 235 4.3.6 映射一对多双向关联关系 239 4.3.7 映射一对多双向自身关联关系 244 4.3.8 映射多对多单向关联关系 247 4.3.9 映射多对多双向关联关系 252 4.3.10 映射组成关系 256 ...

    Web开发+java+ssh框架

    它支持各种关系数据库,从一对一到多对多的各种复杂关系。 缺点:它限制您所使用的对象模型。(例如,一个持久性类不能映射到多个表)其独有的界面和可怜的市场份额也让人不安,尽管如此,Hibernate 还是以其强大的...

    Spring面试题

    3.不用一对一,用多对一取代 4.配置对象缓存,不使用集合缓存 5.一对多集合使用Bag,多对多集合使用Set 6. 继承类使用显式多态 7. 表字段要少,表关联不要怕多,有二级缓存撑腰 7. Struts工作机制?为什么要使用...

    JavORM框架DarksORM.zip

    支持一对一、一对多、多对一注解方式的关联查询。 支持在实体模型类方法上配置query注解。可直接调用实体方法进行相关查询。 框架全部采用懒加载机制。 支持单对象查询、分页查询、集合查询、级联查询。 默认...

Global site tag (gtag.js) - Google Analytics