首页 > 代码库 > 菜鸟学习Hibernate——一对多关系映射
菜鸟学习Hibernate——一对多关系映射
下面就为大家讲解一下:Hibernate中的关系映射,最常见的关系映射之一就是一对多关系映射例如学生与班级的关系,一个班级对应多个学生。如图:
Hibernate中如何来映射这两个的关系呢?
1、创建实体类Classes和实体类Student
Classes.java
package com.bjpowernode.hibernate;import java.util.Set;public class Classes { private int id; private String name; private Set students; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Set getStudents() { return students; } public void setStudents(Set students) { this.students = students; } }Student.java
package com.bjpowernode.hibernate;public class Student { private int id; private String name; private Classes classes; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Classes getClasses() { return classes; } public void setClasses(Classes classes) { this.classes = classes; }}
2、创建映射文件Classes.hbm.xml和Student.hbm.xml
Classes.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> <class name="com.bjpowernode.hibernate.Classes" table="t_classes"> <id name="id"> <generator class="native"/> </id> <property name="name"/> <set name="students" inverse="true"> <!-- <key column="classesid" not-null="true"/> --> <key column="classesid"/> <one-to-many class="com.bjpowernode.hibernate.Student"/> </set> </class></hibernate-mapping>Student.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> <class name="com.bjpowernode.hibernate.Student" table="t_student"> <id name="id"> <generator class="native"/> </id> <property name="name"/> <many-to-one name="classes" column="classesid"/> </class></hibernate-mapping>
3、效果图
PS:我上面举例的是一对多双向关联的例子。有双向关联当然就有单向关联。下面举个例子来说明他们的区别
如果Student添加了一条记录当中的classesid在Classes中没有这个id,双向关联的话则先添加学生这条记录然后再班级那里添加这个班级,然后再更新学生的classesid。单向关联的话先添加班级,然后再添加学生。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。