Hibernate三种映射关系
2008-09-13 16:54
281 查看
[align=center]many-to-many[/align]
一个学生有多个老师,一个老师也有多个学生。现在就在student和teacher这两张表的基础上增加了一张关系表t_s,t_s为自动生成的表。
类代码:
映射文件:
[align=center]one-to-many[/align]
假设有2张表student和teacher,一学生只有一个老师,一个老师有多个学生。
类代码:
映射文件:
本文出自 “梦潇” 博客,请务必保留此出处http://grape.blog.51cto.com/293764/99138
一个学生有多个老师,一个老师也有多个学生。现在就在student和teacher这两张表的基础上增加了一张关系表t_s,t_s为自动生成的表。
类代码:
Student.java [align=left]package com.entity;[/align] [align=left] [/align] [align=left]import java.util.Set;[/align] [align=left] [/align] [align=left]/**[/align] [align=left] * @hibernate.class table="student"[/align] [align=left] * @author Administrator[/align] [align=left] *[/align] [align=left] */[/align] [align=left] [/align] [align=left]public class Student {[/align] [align=left] private int id;[/align] [align=left] [/align] [align=left] private String sname;[/align] [align=left] [/align] [align=left] private Set teacherSet;[/align] [align=left] [/align] [align=left] /**[/align] [align=left] * @hibernate.id generator-class="native"[/align] [align=left] * @return[/align] [align=left] */[/align] [align=left] [/align] [align=left] public int getId() {[/align] [align=left] return id;[/align] [align=left] }[/align] [align=left] [/align] [align=left] public void setId(int id) {[/align] [align=left] this.id = id;[/align] [align=left] }[/align] [align=left] [/align] [align=left] /**[/align] [align=left] * @hibernate.property column="sname";[/align] [align=left] * @return[/align] [align=left] */[/align] [align=left] [/align] [align=left] public String getSname() {[/align] [align=left] return sname;[/align] [align=left] }[/align] [align=left] [/align] [align=left] public void setSname(String sname) {[/align] [align=left] this.sname = sname;[/align] [align=left] }[/align] [align=left] [/align] [align=left] /**[/align] [align=left] * @hibernate.set table="t_s" cascade="all" lazy="false" inverse="true"[/align] [align=left] * @hibernate.collection-key column="s_id"[/align] [align=left] * @hibernate.collection-many-to-many class="com.entity.Teacher" column="t_id"[/align] [align=left] * @return[/align] [align=left] */[/align] [align=left] [/align] [align=left] public Set getTeacherSet() {[/align] [align=left] return teacherSet;[/align] [align=left] }[/align] [align=left] [/align] [align=left] public void setTeacherSet(Set teacherSet) {[/align] [align=left] this.teacherSet = teacherSet;[/align] [align=left] }[/align] [align=left]}[/align] |
Teacher.java [align=left]package com.entity;[/align] [align=left] [/align] [align=left]import java.util.Set;[/align] [align=left] [/align] [align=left]/**[/align] [align=left] * @hibernate.class table="teacher"[/align] [align=left] * @author Administrator[/align] [align=left] *[/align] [align=left] */[/align] [align=left] [/align] [align=left]public class Teacher {[/align] [align=left] private int id;[/align] [align=left] [/align] [align=left] private String tname;[/align] [align=left] [/align] [align=left] private Set studentSet;[/align] [align=left] [/align] [align=left] /**[/align] [align=left] * @hibernate.id generator-class="native"[/align] [align=left] * @return[/align] [align=left] */[/align] [align=left] [/align] [align=left] public int getId() {[/align] [align=left] return id;[/align] [align=left] }[/align] [align=left] [/align] [align=left] public void setId(int id) {[/align] [align=left] this.id = id;[/align] [align=left] }[/align] [align=left] [/align] [align=left] /**[/align] [align=left] * @hibernate.set table="t_s" cascade="all" lazy="false"[/align] [align=left] * @hibernate.collection-key column="t_id"[/align] [align=left] * @hibernate.collection-many-to-many class="com.entity.Student" column="s_id"[/align] [align=left] * @return[/align] [align=left] */[/align] [align=left] [/align] [align=left] public Set getStudentSet() {[/align] [align=left] return studentSet;[/align] [align=left] }[/align] [align=left] [/align] [align=left] public void setStudentSet(Set studentSet) {[/align] [align=left] this.studentSet = studentSet;[/align] [align=left] }[/align] [align=left] [/align] [align=left] /**[/align] [align=left] * @hibernate.property column="tname"[/align] [align=left] * @return[/align] [align=left] */[/align] [align=left] [/align] [align=left] public String getTname() {[/align] [align=left] return tname;[/align] [align=left] }[/align] [align=left] [/align] [align=left] public void setTname(String tname) {[/align] [align=left] this.tname = tname;[/align] [align=left] }[/align] [align=left] [/align] [align=left]}[/align] |
Student.hbm.xml [align=left]<?xml version="1.0" encoding="UTF-8"?>[/align] [align=left] [/align] [align=left]<!DOCTYPE hibernate-mapping PUBLIC[/align] [align=left] "-//Hibernate/Hibernate Mapping DTD 3.0//EN" [/align] [align=left] "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">[/align] [align=left] [/align] [align=left]<hibernate-mapping>[/align] [align=left] <class name="com.entity.Student" table="student">[/align] [align=left] [/align] [align=left] <id name="id" column="id" type="int">[/align] [align=left] <generator class="native">[/align] [align=left] <!-- [/align] [align=left] To add non XDoclet generator parameters, create a file named [/align] [align=left] hibernate-generator-params-Student.xml [/align] [align=left] containing the additional parameters and place it in your merge dir. [/align] [align=left] -->[/align] [align=left] </generator>[/align] [align=left] </id>[/align] [align=left] [/align] [align=left] <property name="sname" type="java.lang.String" update="true"[/align] [align=left] insert="true" column="sname" />[/align] [align=left] [/align] [align=left] <set name="teacherSet" table="t_s" lazy="false" inverse="true"[/align] [align=left] cascade="all" sort="unsorted">[/align] [align=left] [/align] [align=left] <key column="s_id"></key>[/align] [align=left] [/align] [align=left] <many-to-many class="com.entity.Teacher" column="t_id"[/align] [align=left] outer-join="auto" />[/align] [align=left] [/align] [align=left] </set>[/align] [align=left] [/align] [align=left] <!--[/align] [align=left] To add non XDoclet property mappings, create a file named[/align] [align=left] hibernate-properties-Student.xml[/align] [align=left] containing the additional properties and place it in your merge dir.[/align] [align=left] -->[/align] [align=left] [/align] [align=left] </class>[/align] [align=left] [/align] [align=left]</hibernate-mapping>[/align] |
Teacher.hbm.xml [align=left]<?xml version="1.0" encoding="UTF-8"?>[/align] [align=left] [/align] [align=left]<!DOCTYPE hibernate-mapping PUBLIC[/align] [align=left] "-//Hibernate/Hibernate Mapping DTD 3.0//EN" [/align] [align=left] "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">[/align] [align=left] [/align] [align=left]<hibernate-mapping>[/align] [align=left] <class name="com.entity.Teacher" table="teacher">[/align] [align=left] [/align] [align=left] <id name="id" column="id" type="int">[/align] [align=left] <generator class="native">[/align] [align=left] <!-- [/align] [align=left] To add non XDoclet generator parameters, create a file named [/align] [align=left] hibernate-generator-params-Teacher.xml [/align] [align=left] containing the additional parameters and place it in your merge dir. [/align] [align=left] -->[/align] [align=left] </generator>[/align] [align=left] </id>[/align] [align=left] [/align] [align=left] <set name="studentSet" table="t_s" lazy="false" cascade="all"[/align] [align=left] sort="unsorted">[/align] [align=left] [/align] [align=left] <key column="t_id"></key>[/align] [align=left] [/align] [align=left] <many-to-many class="com.entity.Student" column="s_id"[/align] [align=left] outer-join="auto" />[/align] [align=left] [/align] [align=left] </set>[/align] [align=left] [/align] [align=left] <property name="tname" type="java.lang.String" update="true"[/align] [align=left] insert="true" column="tname" />[/align] [align=left] [/align] [align=left] <!--[/align] [align=left] To add non XDoclet property mappings, create a file named[/align] [align=left] hibernate-properties-Teacher.xml[/align] [align=left] containing the additional properties and place it in your merge dir.[/align] [align=left] -->[/align] [align=left] [/align] [align=left] </class>[/align] [align=left] [/align] [align=left]</hibernate-mapping>[/align] |
假设有2张表student和teacher,一学生只有一个老师,一个老师有多个学生。
类代码:
Student.java [align=left]package com.entity;[/align] [align=left] [/align] [align=left]/**[/align] [align=left] * @hibernate.class table="student"[/align] [align=left] * @author Administrator[/align] [align=left] *[/align] [align=left] */[/align] [align=left]public class Student {[/align] [align=left] private int id;[/align] [align=left] [/align] [align=left] private String sname;[/align] [align=left] [/align] [align=left] private Teacher teacher;[/align] [align=left] [/align] [align=left] /**[/align] [align=left] * @hibernate.id column="id" generator-class="native"[/align] [align=left] * @return[/align] [align=left] */[/align] [align=left] [/align] [align=left] public int getId() {[/align] [align=left] return id;[/align] [align=left] }[/align] [align=left] [/align] [align=left] public void setId(int id) {[/align] [align=left] this.id = id;[/align] [align=left] }[/align] [align=left] [/align] [align=left] /**[/align] [align=left] * @hibernate.property column="sname"[/align] [align=left] * @return[/align] [align=left] */[/align] [align=left] [/align] [align=left] public String getSname() {[/align] [align=left] return sname;[/align] [align=left] }[/align] [align=left] [/align] [align=left] public void setSname(String sname) {[/align] [align=left] this.sname = sname;[/align] [align=left] }[/align] [align=left] [/align] [align=left] /**[/align] [align=left] * @hibernate.many-to-one class="com.entity.Teacher" [/align] [align=left] * column="t_id"[/align] [align=left] * cascade="all"[/align] [align=left] * @return[/align] [align=left] */[/align] [align=left] [/align] [align=left] public Teacher getTeacher() {[/align] [align=left] return teacher;[/align] [align=left] }[/align] [align=left] [/align] [align=left] public void setTeacher(Teacher teacher) {[/align] [align=left] this.teacher = teacher;[/align] [align=left] }[/align] [align=left]}[/align] |
Teacher.java [align=left]package com.entity;[/align] [align=left] [/align] [align=left]import java.util.Set;[/align] [align=left] [/align] [align=left]/**[/align] [align=left] * @hibernate.class table="teacher"[/align] [align=left] * @author Administrator[/align] [align=left] *[/align] [align=left] */[/align] [align=left] [/align] [align=left]public class Teacher {[/align] [align=left] private int id;[/align] [align=left] [/align] [align=left] private String tname;[/align] [align=left] [/align] [align=left] private Set students;[/align] [align=left] [/align] [align=left] /**[/align] [align=left] * @hibernate.id column="id" generator-class="native"[/align] [align=left] * @return[/align] [align=left] */[/align] [align=left] [/align] [align=left] public int getId() {[/align] [align=left] return id;[/align] [align=left] }[/align] [align=left] [/align] [align=left] public void setId(int id) {[/align] [align=left] this.id = id;[/align] [align=left] }[/align] [align=left] [/align] [align=left] /**[/align] [align=left] * @hibernate.set cascade="all" inverse="true" lazy="false"[/align] [align=left] * @hibernate.collection-key column="t_id"[/align] [align=left] * @hibernate.collection-one-to-many class="com.entity.Student"[/align] [align=left] * @return[/align] [align=left] */[/align] [align=left] [/align] [align=left] public Set getStudents() {[/align] [align=left] return students;[/align] [align=left] }[/align] [align=left] [/align] [align=left] public void setStudents(Set students) {[/align] [align=left] this.students = students;[/align] [align=left] }[/align] [align=left] [/align] [align=left] /**[/align] [align=left] * @hibernate.property column="tname"[/align] [align=left] * @return[/align] [align=left] */[/align] [align=left] [/align] [align=left] public String getTname() {[/align] [align=left] return tname;[/align] [align=left] }[/align] [align=left] [/align] [align=left] public void setTname(String tname) {[/align] [align=left] this.tname = tname;[/align] [align=left] }[/align] [align=left]}[/align] |
Student.hbm.xml [align=left]<?xml version="1.0" encoding="UTF-8"?>[/align] [align=left] [/align] [align=left]<!DOCTYPE hibernate-mapping PUBLIC[/align] [align=left] "-//Hibernate/Hibernate Mapping DTD 3.0//EN" [/align] [align=left] "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">[/align] [align=left] [/align] [align=left]<hibernate-mapping>[/align] [align=left] <class name="com.entity.Student" table="student">[/align] [align=left] [/align] [align=left] <id name="id" column="id" type="int">[/align] [align=left] <generator class="native">[/align] [align=left] <!-- [/align] [align=left] To add non XDoclet generator parameters, create a file named [/align] [align=left] hibernate-generator-params-Student.xml [/align] [align=left] containing the additional parameters and place it in your merge dir. [/align] [align=left] -->[/align] [align=left] </generator>[/align] [align=left] </id>[/align] [align=left] [/align] [align=left] <property name="sname" type="java.lang.String" update="true"[/align] [align=left] insert="true" column="sname" />[/align] [align=left] [/align] [align=left] <many-to-one name="teacher" class="com.entity.Teacher"[/align] [align=left] cascade="all" outer-join="auto" update="true" insert="true"[/align] [align=left] column="t_id" />[/align] [align=left] [/align] [align=left] <!--[/align] [align=left] To add non XDoclet property mappings, create a file named[/align] [align=left] hibernate-properties-Student.xml[/align] [align=left] containing the additional properties and place it in your merge dir.[/align] [align=left] -->[/align] [align=left] [/align] [align=left] </class>[/align] [align=left] [/align] [align=left]</hibernate-mapping>[/align] |
Teacher.hbm.xml [align=left]<?xml version="1.0" encoding="UTF-8"?>[/align] [align=left] [/align] [align=left]<!DOCTYPE hibernate-mapping PUBLIC[/align] [align=left] "-//Hibernate/Hibernate Mapping DTD 3.0//EN" [/align] [align=left] "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">[/align] [align=left] [/align] [align=left]<hibernate-mapping>[/align] [align=left] <class name="com.entity.Teacher" table="teacher">[/align] [align=left] [/align] [align=left] <id name="id" column="id" type="int">[/align] [align=left] <generator class="native">[/align] [align=left] <!-- [/align] [align=left] To add non XDoclet generator parameters, create a file named [/align] [align=left] hibernate-generator-params-Teacher.xml [/align] [align=left] containing the additional parameters and place it in your merge dir. [/align] [align=left] -->[/align] [align=left] </generator>[/align] [align=left] </id>[/align] [align=left] [/align] [align=left] <set name="students" lazy="false" inverse="true" cascade="all"[/align] [align=left] sort="unsorted">[/align] [align=left] [/align] [align=left] <key column="t_id"></key>[/align] [align=left] [/align] [align=left] <one-to-many class="com.entity.Student" />[/align] [align=left] [/align] [align=left] </set>[/align] [align=left] [/align] [align=left] <property name="tname" type="java.lang.String" update="true"[/align] [align=left] insert="true" column="tname" />[/align] [align=left] [/align] [align=left] <!--[/align] [align=left] To add non XDoclet property mappings, create a file named[/align] [align=left] hibernate-properties-Teacher.xml[/align] [align=left] containing the additional properties and place it in your merge dir.[/align] [align=left] -->[/align] [align=left] [/align] [align=left] </class>[/align] [align=left] [/align] [align=left]</hibernate-mapping>[/align] |
相关文章推荐
- Hibernate学习2--对象的三种状态以及映射关系的简单配置
- Hibernate之jpa实体映射的三种继承关系
- (转)Hibernate关联映射——对象的三种关系
- Hibernate之jpa实体映射的三种继承关系
- Hibernate关联映射-数据对象三种关系
- Hibernate(十一):映射继承关系的三种方案
- hibernate笔记--继承映射关系的三种实现方式
- Hibernate之jpa实体映射的三种继承关系
- hibernate 映射继承关系的三种方法
- hibernate笔记--单(双)向的多对多映射关系
- Hibernate 学习之路(四):详解 hibernate 映射文件(二)和组件映射关系
- Hibernate框架学习(三) 关系映射
- Hibernate 表自身映射多对多关系,用户对多朋友
- hibernate映射关系级别注解
- HIbernate 关系映射配置
- hibernate里面的一对多关系映射
- Hibernate 关系映射(三) 基于外键关联的单向 1:1
- hibernate继承关系映射
- Hibernate中的一对一映射关系
- hibernate继承的三种映射策略( Inheritance mapping)