`
Wind_ZhongGang
  • 浏览: 264791 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Hibernate ORM One to Many

阅读更多

  讨论一下Hibernate中对象的一对多或多对一关联关系。这里以日志与日志评论来说明这样的关系,一个日志可以有多条评论,而一条评论则只能对应一个日志。

 

  说明一对多的双向关联。它的现实意义就是从日志的角度可以得到该日志下的多条评论,而从评论的角度则可以知道它属于某个日志。

 

  1.Diary.java

 

package com.template.model;

import java.util.List;

/**
 * Created by IntelliJ IDEA.
 * User: Zhong Gang
 * Date: 11-7-20
 * Time: 下午8:13
 * To change this template use File | Settings | File Templates.
 */
public class Diary {
    private Integer id;
    private String title;
    private String content;

    private List<Comment> comments;

    public Diary() {
    }
}

 

  2.Diary.hbm.xml

 

 

<?xml version="1.0"?>

<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping default-access="field">

    <class name="com.template.model.Diary" table="diary">
        <id name="id" column="id" type="java.lang.Integer">
            <generator class="native"/>
        </id>
        <property name="title" column="title" type="java.lang.String"/>
        <property name="content" column="content" type="java.lang.String"/>

        <bag name="comments" table="comment">
            <key column="diaryid"/>
            <one-to-many class="com.template.model.Comment"/>
        </bag>
    </class>

</hibernate-mapping>

 

  3.Comment.java

 

package com.template.model;

/**
 * Created by IntelliJ IDEA.
 * User: Zhong Gang
 * Date: 11-7-20
 * Time: 下午8:13
 * To change this template use File | Settings | File Templates.
 */
public class Comment {
    private Integer id;
    private String content;

    private Diary diary;

    public Comment() {
    }
}

 

 

  4.Comment.hbm.xml

 

 

<?xml version="1.0"?>

<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping default-access="field">

    <class name="com.template.model.Comment" table="comment">
        <id name="id" column="id" type="java.lang.Integer">
            <generator class="native"/>
        </id>
        <property name="content" column="content" type="java.lang.String"/>

        <many-to-one name="diary" class="com.template.model.Diary" column="diaryid"/>
    </class>

</hibernate-mapping>

 

 

  省去Diary与Comment对应的sql语句,相信从Diary.hbm.xml和Comment.hbm.xml映射文件中应该能够知道sql语句是什么样的结构。在comment表中添加了一个diaryid字段来维护Diary与Comment的一对多的关联关系。

 

  如果你只希望从一方能够得到多方,即从一篇日志知道它有哪些评论,而不希望从多方得到一方,即从一条评论无法知道它属于哪篇日志。那么你只需要做一点小小的改动就够了,如下示:

 

  5.Comment.java

 

package com.template.model;

/**
 * Created by IntelliJ IDEA.
 * User: Zhong Gang
 * Date: 11-7-20
 * Time: 下午8:13
 * To change this template use File | Settings | File Templates.
 */
public class Comment {
    private Integer id;
    private String content;

    public Comment() {
    }
}

 

 

  6.Comment.hbm.xml

 

<?xml version="1.0"?>

<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping default-access="field">

    <class name="com.template.model.Comment" table="comment">
        <id name="id" column="id" type="java.lang.Integer">
            <generator class="native"/>
        </id>
        <property name="content" column="content" type="java.lang.String"/>
    </class>

</hibernate-mapping>
 

  即把diary属性删除即可,但是一定记住不能把comment表中的diaryid字段也删除了,那样Diary与Comment也就不存在一对多的关联了。

1
5
分享到:
评论
3 楼 men2011it 2012-01-20  
2 楼 hanxu341 2011-11-29  
lf6627926 写道
高手  我说的意思能不能 在中间的表中还有出了 两个表的主键外  还有其他的字段  如日期,等等。有好办法吗

同问
1 楼 lf6627926 2011-10-24  
高手  我说的意思能不能 在中间的表中还有出了 两个表的主键外  还有其他的字段  如日期,等等。有好办法吗

相关推荐

    Hibernate one to many(many to one) 配置

    标题"Hibernate one to many(many to one) 配置"涉及到的是关系型数据库在Java中的持久化框架Hibernate中的两种关联映射关系:一对一(One-to-One)和多对一(Many-to-One)。在数据库设计中,这种关系很常见,例如...

    hibernate学习5之one-to-many双向关联.docx

    在Hibernate框架中,双向一对多关联映射是常见的对象关系映射(ORM)方式,用于在Java对象模型中表示数据库中的两个实体之间的多对一关系。在这个场景中,"一"端通常指的是一个实体可以拥有多个另一个实体的实例,而...

    hibernate many-to-one(多对一)及 cascade(级联).doc

    ### Hibernate Many-to-One (多对一) 及 Cascade (级联) #### 一、Many-to-One(多对一) 在数据库设计中,实体之间的关系主要包括一对一、一对多、多对多等几种类型。而在ORM(对象关系映射)框架Hibernate中,...

    Hibernate应用例子many-to-many

    本示例将详细讲解如何在Hibernate中实现多对多(many-to-many)的关系映射。 在数据库设计中,多对多关系是指两个实体之间存在多个关联,比如学生和课程的关系,一个学生可以选修多门课程,一门课程也可以被多个...

    Hibernate one-to-many-annotation

    在Hibernate中,`one-to-many`关系是常见的实体间关系之一,表示一个实体可以与多个其他实体相关联。本文将深入探讨`Hibernate one-to-many`注解的使用和实现细节。 ### 一、`@OneToMany`注解概述 `@OneToMany`...

    Hibernate Mapping Many-to-One 实例 内附源代码及附件下载

    本实例将详细讲解如何在Hibernate中实现Many-to-One关系映射,这是一种常见的数据库关联,表示一个实体可以与多个其他实体相关联。 在Many-to-One关系中,通常一个实体(如部门)可以有多个相关实体(如员工),而...

    Hibernate之第3解之-hibernate_hibernate_many2one_1

    《深入理解Hibernate:第三解——Many-to-One关系映射实战》 在Java世界里,ORM(Object-Relational Mapping)框架的出现极大地简化了数据库与Java对象之间的交互,而Hibernate作为其中的佼佼者,更是备受开发者青睐...

    hibernate_many2one

    除了基本的`&lt;many-to-one&gt;`映射外,Hibernate还支持多种映射策略,如`@ManyToOne`、`@JoinColumn`等注解,这些注解可以在实体类中直接使用,使得代码更加简洁明了。例如: ```java @ManyToOne(fetch = FetchType....

    hiberante - one to many - update

    标题中的“hibernate - one to many - update”指的是Hibernate框架中关于一对一(One-to-Many)关系映射和更新操作的知识点。在Java开发中,Hibernate是一个流行的对象关系映射(ORM)工具,它允许开发者用面向对象...

    hibernate one-to-many 单/双向关联映射配置心得

    本文主要关注Hibernate中的一个核心概念——一对一(One-to-One)、一对多(One-to-Many)和多对一(Many-to-One)关联映射,特别是关于“一到多”单向和双向关联映射的配置心得。 首先,让我们了解“一到多”关联...

    hibernate 关联映射(一) many to one

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

    hibernate_1700_one2many_many2one_bi_crud(5)

    标题中的“hibernate_1700_one2many_many2one_bi_crud(5)”指的是一项关于Hibernate框架的教程,重点在于介绍一对多(One-to-Many)和多对一(Many-to-One)双向关联关系的创建、读取、更新和删除(CRUD)操作。...

    hibernate_6映射关系之one2many.zip_hibernate

    在Java的持久化框架Hibernate中,`One-to-Many`映射关系是对象关系映射(ORM)中常见的一种关联类型。它表示一个实体("One"端)与多个其他实体("Many"端)之间的关系。例如,一个学生可以有多个课程,一个老师可以...

    One2Many

    3. 关系映射:在对象关系映射(ORM)框架中,如Hibernate或Mybatis,我们需要在实体类中定义这种关系,通常通过集合(如List、Set)来表示多的一方。 二、Mybatis中的One2Many映射 1. 映射文件:在Mybatis的XML...

    day36 07-Hibernate抓取策略:many-to-one上的抓取策略

    今天我们要讨论的是Hibernate框架中的一个关键概念——抓取策略,特别是针对"many-to-one"关系的抓取策略。这篇博客将深入剖析这个主题,帮助你更好地理解和应用Hibernate。 Hibernate是Java领域中最流行的对象关系...

    NHibernate One-to-Many一对多映射-xxlinux_com

    在数据库世界中,一对多(One-to-Many)关系是一种常见的关联类型,其中一个表(父表)可以与多个其他表(子表)相关联。在NHibernate中,配置这种映射关系对于理解和使用ORM至关重要。 一对多关系意味着一个实体...

    Hibernate实现many-to-many的映射关系

    在本文中,我们将深入探讨如何使用Hibernate来实现多对多(many-to-many)的映射关系。 首先,多对多映射关系通常涉及到两个实体类之间的关联,例如在学生选课的例子中,学生(Student)和课程(Course)之间存在多...

    hibernate对象三状态及OneToOne&OneToMany&ManyToMany

    在Java世界中,Hibernate是一个非常流行的ORM(对象关系映射)框架,它简化了数据库操作,使得开发者可以使用面向对象的方式来处理数据。本篇将详细阐述Hibernate中的对象三状态、一对一(OneToOne)、一对多...

Global site tag (gtag.js) - Google Analytics