您的位置:首页 > 其它

Hibernate三种映射关系

2008-09-13 16:54 281 查看
[align=center]many-to-many[/align]

一个学生有多个老师,一个老师也有多个学生。现在就在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]
[align=center]one-to-many[/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]
本文出自 “梦潇” 博客,请务必保留此出处http://grape.blog.51cto.com/293764/99138
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: