zoukankan      html  css  js  c++  java
  • 攻城狮在路上(壹) Hibernate(五)--- 映射一对多关联关系


    关联是有方向的,包含单向关联和双向关联。分别讨论。
    本文以客户Customer和订单Order来进行讨论:一个Customer有多个Order,每个Order对应一个Customer。


    Customer对象代码

    public class Customer {
    
      private long id;
      private String name;
      private Set<Order> orders;
      ...
    
    }

    Order对象代码

    public class Order implements java.io.Serializable {
      private long id;
      private String orderNumber;
      private Customer customer;
      ... }

    一、建立多对一的单向关联关系
      配置文件代码

    <many-to-one
      name="customer"
      column="CUSTOMER_ID"
      class="mypack.Customer"
      cascade="save-update"
      not-null="true" 
      lazy="false"
    />

      属性说明

    A、name:待持久化类的属性名。
    B、column:设定和待映射的持久化类的属性对应的表的外键。此处为ORDERS表的外键customer_id.
    C、class:设定待映射的持久化类的属性的类型。
    D、cascade:级联保存和更新,详见后续说明。
    E、not-null:该属性不能为空,引用临时对象也可能会报错(提供了cascade级联设置之后可以避免)
    F、lazy:懒加载,后续说明。

    二、映射一对多双向关联关系
      配置文件代码

    <set name="orders" inverse="true" cascade="save-update" >
      <key column="CUSTOMER_ID" />
      <one-to-many class="mypack.Order" />
    </set> 

      属性说明

    name:设定待持久化类的属性名。
    cascade:级联属性设置。nonesave-updatedeleteall-delete-orphan
    inverse:默认值为false,是否由该端维护关联关系。当值为false时维护,不想在该端维护时将其设置为true。
    <key>元素:说明ORDERS表通过外键CUSTOMER_ID参照CUSTOMERS表。
    <one-to-many>:说明orders集合中存放的是一组Order对象。

    三、映射一对多双向自身关联关系
      另一种可能的需求类似于分类体系。
      Cat中可能有上级分类,也有下级分类,此种情况就会出现一对多双向自身关联。
      解决方案就是上面两种情况的结合。


    声明:该文所有内容均来自《精通Hibernate:Java对象持久化技术详解》[孙卫琴 电子工业出版社] 一书。该文的目的仅仅作为学习笔记。若需要转载,请注明原书相关信息。

  • 相关阅读:
    基础_String
    tomcat缓存
    jquery绑定事件
    Java面试之基础题---对象Object
    Java设计模式学习三-----工厂模式
    网络基础学习---各种概念
    Java设计模式学习二
    Hibernate框架的主键生成策略
    Hibernate的Session的get()和load()方法区别
    Hibernate 框架理解
  • 原文地址:https://www.cnblogs.com/tq03/p/3748973.html
Copyright © 2011-2022 走看看