`
赵大帅
  • 浏览: 5380 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

关联关系映射之一对多

阅读更多

关联关系映射

一对多关联关系:

一对多关联关系是比较常用的关系之一比如:

留言和回复、班级和学生、类别和商品 都是典型的一对多关联关系。在数据库表中的一对多关联关系主要通过外键来建立两表之间的关系

 在Hibernate的关联中,添加关联属性,如本例所示,应该在Grade类中添加Set类型的students属性实现和Student之间的一对多单向关联关系

package com.zx.model;

public class Student {
	private int studentID;
	private String studentName;

	public int getStudentID() {
		return studentID;
	}

	public void setStudentID(int studentID) {
		this.studentID = studentID;
	}

	public String getStudentName() {
		return studentName;
	}

	public void setStudentName(String studentName) {
		this.studentName = studentName;
	}

}


package com.zx.model;

import java.util.HashSet;
import java.util.Set;

public class Grade {
	private int gradeID;
	private String gradeName;
	private String gradeDesc;
	private Set<Student> students = new HashSet<Student>();

	public int getGradeID() {
		return gradeID;
	}

	public void setGradeID(int gradeID) {
		this.gradeID = gradeID;
	}

	public String getGradeName() {
		return gradeName;
	}

	public void setGradeName(String gradeName) {
		this.gradeName = gradeName;
	}

	public String getGradeDesc() {
		return gradeDesc;
	}

	public void setGradeDesc(String gradeDesc) {
		this.gradeDesc = gradeDesc;
	}

	public Set<Student> getStudents() {
		return students;
	}

	public void setStudents(Set<Student> students) {
		this.students = students;
	}
}

  然后在关联映射文件Grade.hbm.xml中为刚刚添加的集合属性students建立映射信息,如下:

<hibernate-mapping package="com.zx.model">
	<class name="Grade" table="grade">
		<id name="gradeID" column="gradeID" type="integer">
			<generator class="native" />
		</id>
		<property name="gradeName" type="string" column="gradeName" />
		<property name="gradeDesc" type="string" column="gradeDesc" />
		<set name="students" lazy="false">
			<key column="gradeID" />
			<one-to-many class="com.zx.model.Student"/>
		</set>
	</class>
</hibernate-mapping>

 

   key : 指定的关联表中的外键,也就是说这里指的是 Student表中的外键 GradeID

   one-to-many :  指的是关联类型为com.demo.Student类

  测试:

 

public static void main(String[] args) {
		Configuration configuration = new Configuration().configure();
		SessionFactory sessionFactory = configuration.buildSessionFactory();
		Session session = sessionFactory.openSession();
		Grade g = (Grade)session.get(Grade.class, 1);
		Iterator<Student> it = g.getStudents().iterator();
		while(it.hasNext()){
			Student s = it.next();
			System.out.println(g.getGradeName() + ":" + s.getStudentName());
		}
	}

 

  • 大小: 8.4 KB
分享到:
评论

相关推荐

    hibernate的关联关系映射

    【hibernate的关联关系映射】在Java持久化框架Hibernate中,关联关系映射是核心功能之一,它允许对象间的复杂关系与数据库中的表结构相匹配。在选课系统这个例子中,主要涉及到的对象包括课题(Course)、教师(Teacher...

    Hibernate之关联关系映射(一对多和多对一映射,多对多映射).docx

    在Java的持久化框架Hibernate中,关联关系映射是实现对象关系映射(ORM)的重要概念,它允许我们在Java对象和数据库表之间建立链接。本文将深入探讨Hibernate中的一对多、多对一以及多对多映射。 1. 一对多与多对一...

    Hibernate 关联关系映射分类

    综上所述,Hibernate提供了丰富的关联关系映射机制,包括一对一、一对多和多对多关联,每种关联又可以细分为单向和双向,以及基于主键和基于外键的不同实现方式。正确理解和选择合适的关联关系对于构建高效、可维护...

    hibernate多对多关联映射

    总之,Hibernate的多对多关联映射是解决复杂关系数据库设计的关键技术之一。通过合理的配置和使用,开发者可以轻松管理实体之间的多对多关系,提高开发效率。理解并熟练掌握这部分知识对于提升Java企业级应用开发...

    hibernate关联映射详解SSH 多对多,一对多关系对象映射

    本篇文章将深入探讨Hibernate中的一对多和多对多关系映射。 首先,让我们理解一对多关联映射。在数据库中,一对多关系意味着一个表中的记录可以与另一个表中的多个记录相关联。在Hibernate中,这可以通过在实体类中...

    Hibernate教程04_关系映射之一对一单向外键关联

    **标题详解:**“Hibernate教程04_关系映射之一对一单向外键关联” 在Hibernate框架中,关系映射是数据库表之间的关联在对象模型中的体现。本教程重点讲解了一对一(One-to-One)单向外键关联的实现方法。在数据库...

    Hibernate教程05_关系映射之一对一双向外键关联

    在本教程中,我们将深入探讨Hibernate中的一个关键概念——关系映射,特别是“一对一”双向外键关联。这种关联类型在数据库设计中很常见,尤其是在处理具有紧密耦合的实体时。Hibernate作为Java中广泛使用的对象关系...

    hibernate关联关系映射

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

    Hibernate教程11_关系映射之一对多单向关联

    本教程主要探讨的是Hibernate中的一种重要关系映射类型:一对多单向关联。在关系型数据库中,一对多关联是最常见的关系类型,一个实体可以与多个其他实体相关联。在Hibernate中,这种关系可以通过配置XML映射文件或...

    Hibernate_关联关系映射配置

    理解并熟练掌握Hibernate中的关联关系映射配置是每个Java开发者必备的技能之一。通过正确的注解和配置,我们可以轻松地在对象和数据库表之间建立对应关系,实现数据的高效存取。这不仅简化了代码,还提高了开发效率...

    Hibernate_实体关联关系映射--学习总结

    实体关联关系映射涉及一对一、一对多、多对多等多种形式,而这些映射方式又可以分为单向和双向,依据使用的是主键还是外键,以及是否使用连接表。接下来,我们详细介绍这些知识点。 ###Hibernate实体关联关系映射...

    Hibernate教程12_关系映射之一对多(多对一)双向关联

    本教程主要聚焦于Hibernate中的关系映射,特别是"一对多"(多对一)的双向关联。在数据库设计中,这种关系映射非常常见,比如一个用户可以有多个订单,而每个订单对应一个用户。 首先,我们需要理解"一对多"(One-...

    JPA一对一,一对多,多对多关系映射

    在JPA中,关系映射是核心特性之一,它将数据库表之间的关系映射为Java类之间的关系,使数据操作更加直观和方便。本篇将深入探讨JPA中的一对一(OneToOne)、一对多(OneToMany)以及多对多(ManyToMany)关系映射。 ...

    Mybatis关联映射Demo

    关联映射是Mybatis处理对象关系映射的核心功能之一。 首先,我们要理解Mybatis中的三种关联映射类型: 1. **一对一(OneToOne)映射**:这种映射通常用于表示两个实体之间一对一的关系,例如一个用户只有一个地址...

    Hibernate教程06_关系映射之一对一单向主键关联

    **标题详解:** "Hibernate教程06_关系映射之一对一单向主键关联" 在Hibernate框架中,关系映射是将数据库中的表关系映射到对象模型上的过程。本教程聚焦于一对一(One-to-One)单向主键关联,这是一种特定类型的...

    Hibernate教程07_关系映射之一对一双向主键关联

    在" Hibernate教程07_关系映射之一对一双向主键关联"中,我们将学习如何设置这种关联。首先,我们需要创建两个实体类,例如`Employee`和`Department`。在每个类中,我们都需要定义主键字段,并用`@Id`注解标记。然后...

    Hibernate教程14_关系映射之多对多双向关联

    标题"Hibernate教程14_关系映射之多对多双向关联"暗示我们将探讨如何在Hibernate中设置两个实体之间的双向多对多关联。双向意味着在两个实体类中,都可以直接访问到对方的集合。 在描述中提到的链接是一个CSDN博客...

    Hibernate一对一主键关联映射(单向关联)

    在Java的持久化框架Hibernate中,一对一(One-to-One)关联映射是常见的关系映射方式之一,尤其在处理两个实体之间存在唯一对应关系时非常有用。本篇将重点讲解如何实现一对一主键关联映射的单向关联,并通过一个...

Global site tag (gtag.js) - Google Analytics