`
cheng330301560
  • 浏览: 174743 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Hibernate中一对多的双向关联

阅读更多

在这里我直接就说hibernate的一对多的双向关联,对于一对多的单项关联和多对一的单项关联几乎就没用到,在项目中也很少使用。

 

首先有两张关联的表,类别表Category和展品表Product,一个类别对应多种展品,

 

category字段有 id(主键),name

 

product字段有 id(主键) name,price,c_id(这个就是外键)

 

在Category类中

 

    private Integer id;
    private String name;
    private Set<Product> products=new HashSet();//注意这里不要只写private Set<Product> products,不然后面会出现问题的,因为在取集合的时候回返回null,这样是不行的

 

定义好属性后再分别生成对于的get/set方法

 

在Product类中

    private Integer id;
    private String name;
    private Double price;
    private Category category;

 

再分别生成对对应的get/set方法

 

在设置相应的.hbm.xml文件

 

在Category.hbm.xml文件中

 

<hibernate-mapping>
    <class name="com.cheng.entry.Category" table="category">
        <id name="id" type="java.lang.Integer">
            <column name="id"></column>
            <generator class="native"></generator>
        </id>
        <property name="name" type="java.lang.String">
            <column name="name" length="255"></column>
        </property>
        <set name="products(这个表示的就是Category类中的Set集合)">
            <key column="c_id(这个说明的就是在表product中的外键)"></key>
            <one-to-many class="com.cheng.entry.Product(说明所在的类)"/>
        </set>

    </class>
</hibernate-mapping>

 

 

在Product.hbm.xml中

 

<hibernate-mapping>
    <class name="com.cheng.entry.Product" table="product">
        <id name="id" type="java.lang.Integer">
            <column name="id"></column>
            <generator class="native"></generator>
        </id>
        <property name="name" type="java.lang.String">
            <column name="name" length="200"></column>
        </property>
        <property name="price" type="java.lang.Double">
            <column name="price" ></column>
        </property>
        <many-to-one name="category(这个就是在Product类中定义的)" class="com.cheng.entry.Category">
            <column name="c_id(对应product表中的外键)"></column>
        </many-to-one>

    </class>
</hibernate-mapping>

 

 

这样就完成了

 

在这里还可以在

一方中设置 cascade属性

        <set name="products(这个表示的就是Category类中的Set集合)" cascade="save-update">
            <key column="p_id(这个说明的就是在表product中的外键)"></key>
            <one-to-many class="com.cheng.entry.Product(说明所在的类)"/>
        </set>

 

表示的级联,意思就是说主动方执行操作时,被关联的对象(被动方)是否要同步执行同一操作(在一对多的关联中,一般都是一方是主动方)

cascade有四个值:

none:什么也不做

save-update:一方进行添加和更新时(这个经常用)

all:所以操作

delete:

delete-orphan:

 

在一方中可以设置反转inverse="true"

控制反转,在一对多中让多方变为主动对象

 

 

 

 

分享到:
评论

相关推荐

    hibernate对映射xml的一对多的双向关联详解

    NULL 博文链接:https://hi-beijing.iteye.com/blog/1315150

    Java面试宝典2010版

    12、写Hibernate的一对多和多对一双向关联的orm配置? 9、hibernate的inverse属性的作用? 13、在DAO中如何体现DAO设计模式? 14、spring+Hibernate中委托方案怎么配置? 15、spring+Hibernate中委托方案怎么配置? ...

    最新Java面试宝典pdf版

    12、写Hibernate的一对多和多对一双向关联的orm配置? 122 9、hibernate的inverse属性的作用? 122 13、在DAO中如何体现DAO设计模式? 123 14、spring+Hibernate中委托方案怎么配置? 123 15、spring+Hibernate中委托...

    Java面试笔试资料大全

    12、写Hibernate的一对多和多对一双向关联的orm配置? 122 9、hibernate的inverse属性的作用? 122 13、在DAO中如何体现DAO设计模式? 123 14、spring+Hibernate中委托方案怎么配置? 123 15、spring+Hibernate中委托...

    JAVA面试宝典2010

    12、写Hibernate的一对多和多对一双向关联的orm配置? 122 9、hibernate的inverse属性的作用? 122 13、在DAO中如何体现DAO设计模式? 123 14、spring+Hibernate中委托方案怎么配置? 123 15、spring+Hibernate中委托...

    Java面试宝典-经典

    12、写Hibernate的一对多和多对一双向关联的orm配置? 122 9、hibernate的inverse属性的作用? 122 13、在DAO中如何体现DAO设计模式? 123 14、spring+Hibernate中委托方案怎么配置? 123 15、spring+Hibernate中委托...

    java面试题大全(2012版)

    12、写Hibernate的一对多和多对一双向关联的orm配置? 122 9、hibernate的inverse属性的作用? 122 13、在DAO中如何体现DAO设计模式? 123 14、spring+Hibernate中委托方案怎么配置? 123 15、spring+Hibernate中委托...

    Java面试宝典2012版

    12、写Hibernate的一对多和多对一双向关联的orm配置? 122 9、hibernate的inverse属性的作用? 122 13、在DAO中如何体现DAO设计模式? 123 14、spring+Hibernate中委托方案怎么配置? 123 15、spring+Hibernate中...

    java面试宝典2012

    12、写Hibernate的一对多和多对一双向关联的orm配置? 134 9、hibernate的inverse属性的作用? 134 13、在DAO中如何体现DAO设计模式? 134 14、spring+Hibernate中委托方案怎么配置? 134 15、spring+Hibernate中委托...

    Java面试宝典2012新版

    12、写Hibernate的一对多和多对一双向关联的orm配置? 122 9、hibernate的inverse属性的作用? 122 13、在DAO中如何体现DAO设计模式? 123 14、spring+Hibernate中委托方案怎么配置? 123 15、spring+Hibernate中委托...

    Java 面试宝典

    1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? ...... 7 2、Java 有没有 goto? .......................................................................................................

Global site tag (gtag.js) - Google Analytics