`
shiminwang
  • 浏览: 3392 次
  • 性别: Icon_minigender_1
  • 来自: 天津
文章分类
社区版块
存档分类
最新评论

一对多/多对一双向关联

阅读更多
第一步:在数据库里建两张表,例如:一张表名是CLASS 有STUDENTCLASSID,STUDENTCLASSNAME,另一张表名是STUDENT 有 STUDENTID,STUDENTCLASSID,STUDENTNAME,
第二步:创建两个PO对象,Class ,Student.
package po;

import java.util.Set;

public class Class {
private  int studentclassid;
private String studentclassname;
private Set student;
public Set getStudent() {
return student;
}
public void setStudent(Set student) {
this.student = student;
}
public int getStudentclassid() {
return studentclassid;
}
public void setStudentclassid(int studentclassid) {
this.studentclassid = studentclassid;
}
public String getStudentclassname() {
return studentclassname;
}
public void setStudentclassname(String studentclassname) {
this.studentclassname = studentclassname;
}
}







package po;

public class Student {
private int studentid;
private String studentname;
private int studentclassid;
private Class clases;
public int getStudentclassid() {
return studentclassid;
}
public void setStudentclassid(int studentclassid) {
this.studentclassid = studentclassid;
}
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;
}
public Class getClases() {
return clases;
}
public void setClases(Class clases) {
this.clases = clases;
}
}


第三步:创建两个映射文件,分别对应两个表;
注意了:两个映射文件的Set属性,和Class属性 之间也有关联;
通过两个表间共有的东西去关联的!即STUDENTCLASSID
<set name="student" inverse="true" >
<key>
<column name="STUDENTCLASSID"></column>
</key>
<one-to-many class="po.Student" />
</set>
<many-to-one name="clases" class="po.Class" fetch="select"
insert="false" update="false">
<column name="STUDENTCLASSID"></column>
</many-to-one>第四步:把Class.hbm.xml 和 Student.hbm.xml 加入到hibernate-cfg.xml文件中<mapping resource="po/Class.hbm.xml"></mapping>
<mapping resource="po/Student.hbm.xml"></mapping>
第五步:测试学生的班级的名称和某个班级的学生分别是谁?
首相import  po.Student ,Student stu=(Student)get (Student.class,new Integer(1));
System.out.println(student.getClases().getStudentclassname());先得到学生的班级属性,然后班级属性还有班级名称属性;


获得班级的学生人数属性
通过Set.iterator()把Set里的内容全部迭代出来返回值是Student类型的,
Class clases=(Class) session.get(Class.class, new Integer(3));
Set set =clases.getStudent();
Iterator it= set.iterator();
while (it.hasNext()){
Student stu=(Student)it.next();
System.out.println(stu.getStudentname());
}
源代码:import java.util.Iterator;
import java.util.Set;

import org.hibernate.Session;
import org.hibernate.Transaction;

import po.Student;
import po.Class;
public class Test {


public static void main(String[] args) {
HibernateTools tool = new HibernateTools();
Session session = tool.getSession();
Transaction traa = session.beginTransaction();
traa.begin();
Student student = (Student) session.get(Student.class, new Integer(1));
System.out.println(student.getClases().getStudentclassname());
Class clases=(Class) session.get(Class.class, new Integer(3));
Set set =clases.getStudent();
Iterator it= set.iterator();
while (it.hasNext()){
Student stu=(Student)it.next();
System.out.println(stu.getStudentname());
}

}
}
分享到:
评论

相关推荐

    Hibernate ORM - 一对多双向关联关系

    标题“Hibernate ORM - 一对多双向关联关系”指的是在数据库建模中,Hibernate ORM(对象关系映射)框架如何处理一个实体类(如User)与多个实体类(如Article)之间的关系。在这种关系中,一个用户可以拥有多个文章...

    hibernate一对多,多对一,一对多双向关联

    标题"hibernate一对多,多对一,一对多双向关联"指涉的是Hibernate框架中常见的关系映射概念。在数据库设计中,实体间的关系通常包括一对一(One-to-One)、一对多(One-to-Many)和多对一(Many-to-One)关系,而在...

    mybatis系列三:一对多双向关联

    在MyBatis系列的第三部分,我们将深入探讨“一对多双向关联”的概念及其实现方法。 首先,理解“一对多”关联是关键。在数据库设计中,这种关系表示一个实体(如订单)可以与多个其他实体(如订单中的商品)相关联...

    JPA_2_一对多双向关联关系

    **JPA 2 一对多双向关联关系** Java Persistence API(JPA)是Java平台上的一个标准,用于处理对象关系映射(ORM),使得开发者可以使用面向对象的方式操作数据库。在JPA中,一对多关联关系是常见的实体间关系类型...

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

    标题"Hibernate一对一主键关联映射(双向关联)"中的"主键关联"指的是两个实体通过共享相同的主键来建立关联。"双向关联"则意味着在两个实体类中,都可以直接访问到对方的实例,即在实体A中有一个对实体B的引用,...

    Hibernate一对多双向自身关联demo代码

    在这个“Hibernate一对多双向自身关联demo代码”中,我们将深入理解如何实现一个实体类与其自身进行一对多的双向关联。这种关联在实际应用中常见于例如用户的朋友关系、员工的上下级关系等场景。 首先,让我们了解...

    JPA中的一对多双向关联与级联操作

    这篇博客将深入探讨JPA中的一对多双向关联以及级联操作。 首先,让我们理解一对多关联。假设我们有两个实体,一个是`User`(用户)和一个是`Post`(帖子)。一个用户可以发布多个帖子,但一个帖子只能属于一个用户...

    Hibernate双向一对一关联映射(注解版)

    本主题聚焦于“Hibernate双向一对一关联映射”的注解实现,这是一种高级的数据库设计模式,用于处理两个实体之间一对一的关系。 在Hibernate中,一对一关联映射分为单向和双向。单向一对一映射通常涉及一个实体持有...

    hibernate双向一对多关联映射(注解版)

    在Java的持久化框架Hibernate中,双向一对多关联映射是一种常见的关系映射方式,它模拟了数据库中的外键关联,使得一个实体可以拥有多个另一个实体的实例。在这个注解版的实现中,我们将深入探讨如何使用Hibernate的...

    多对多双向关联

    在编程领域,尤其是在Java或Spring框架中,"多对多双向关联"是一个常见的数据库关系映射概念。在数据库设计中,关系模型允许实体之间存在多种联系,而多对多关联是最复杂也是最灵活的一种关系类型。它表示一个实体...

    hibernate基于主外键的一对多/多对一关联

    总结起来,Hibernate中的一对多/多对一关联是通过主外键映射来实现的,通过注解和配置文件定义实体间的关联关系,利用懒加载或立即加载策略控制数据获取,同时要注意双向关联的维护和级联操作的设置,以确保数据的...

    hibernate多对多双向关联

    **标题解析:**“hibernate多对多双向关联” 在Java编程中,Hibernate是一个流行的ORM(对象关系映射)框架,它允许开发者用面向对象的方式处理数据库操作。"多对多双向关联"是Hibernate中一种关系映射类型,涉及两...

    Hibernate Annotation 基于外键的一对多双向关联

    本文将深入探讨如何使用Hibernate注解实现基于外键的一对多双向关联。我们将通过具体实例来解析这个主题,并结合源码分析其工作原理。 首先,我们要明白一对多关联意味着一个实体可以拥有多个关联的实体。在数据库...

    多对一双向关联(视频)

    通过学习和掌握多对一和一对多双向关联,开发者可以更好地设计和实现复杂的数据库模型,并有效地使用ORM工具将这些模型映射到实际的数据库操作中。理解这些关联的概念对于开发高效、可维护的Java应用至关重要。

    13_jpa多对多双向关联实体定义与注解

    本篇将详细讲解JPA中的一个关键概念——多对多双向关联,并通过实体定义与注解设置来深入理解这一特性。"13_传智播客JPA详解"系列教程涵盖了JPA的诸多方面,而"13_传智播客JPA详解_JPA中的多对多双向关联实体定义与...

    JPA中的多对多双向关联实体定义与注解设置

    总结来说,JPA中的多对多双向关联实体定义涉及`@ManyToMany`、`@JoinTable`以及`mappedBy`等注解的使用。正确配置这些注解可以让我们轻松地管理实体之间的复杂关系,并简化数据库操作。在实际项目中,理解并熟练掌握...

    多对一双向关联关系实现源码

    本篇文章将详细讲解如何在Hibernate中实现多对一双向关联关系,并通过源码分析加深理解。 多对一关联关系是指在数据库中,一个实体(表)可以与多个其他实体(表)相关联,而另一个实体则对应于前者的多个实例。...

    hibernate双向一对多关联映射(XML)

    在Java的持久化框架Hibernate中,双向一对多关联映射是一种常见的关系数据库模型与对象模型之间的映射方式。这种映射允许在一个实体类中存在多个另一个实体类的实例,而在另一个实体类中也可能存在对第一个实体类的...

Global site tag (gtag.js) - Google Analytics