菜鸟学习Hibernate——一对多关系映射
2014-05-21 17:04
155 查看
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。单向关联的话先添加班级,然后再添加学生。
相关文章推荐
- 个人学习历程之菜鸟初体验mybatis高级映射一对一查询
- 菜鸟学习Hibernate——多对多关系映射
- 菜鸟学习Hibernate——一对多关系映射
- 菜鸟学习Hibernate——多对多关系映射
- [学习笔记]Asp.net(C#)菜鸟进级系列之值类型
- 学习笔记之 O/R 映射技术的王牌Hibernate框架
- NHibernate学习手记(6) - 实现one2many/many2one的映射
- ATL学习笔记(4): COM接口映射表
- 学习笔记之什么是持久化和对象关系映射ORM技术
- java接口用法学习----------------java菜鸟学飞第一步
- [学习笔记]Asp.net(C#)菜鸟进级系列之流程控制
- Castle ActiveRecord学习实践(5):实现Many–Many关系的映射
- Castle ActiveRecord学习实践(4):实现One-Many关系的映射
- 学习笔记之 O/R 映射技术的王牌Hibernate框架
- Hibernate 3.2 学习笔记 映射继承关系
- ActiveRecord学习(三):映射
- Castle ActiveRecord学习实践(3):映射基础
- 学习delphi6之菜鸟级别
- Castle ActiveRecord学习实践(4):实现One-Many关系的映射
- 第一次学习内存映射文件