引用自已主键的那个
3,引用关联对象的那个外键 3,引用关联对象的那个外键
4,关联的实体类型 4,关联的实体类型


学生映射文件

<?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 package="cn.itcast.g_hbm_manyToMany">
<!-- 类名 -->
<class name="Student" table="t_student">
<id name="id" type="integer" column="id">
<generator class="native" />
</id>
<property name="name" type="string" column="name" />

<!-- teachers属性,Set集合。
表达的是本类与Teacher的多对多的关联关系

table属性:中间表(集合表)
key子元素:集合外键 (引用当前表主键的那个外键)
-->
<set name="teachers" table="t_teacher_student">
<key column="studentId"></key>
<many-to-many class="Teacher" column="teacherId"></many-to-many>
</set>
</class>
</hibernate-mapping>


老师映射文件

<?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 package="cn.itcast.g_hbm_manyToMany">
<!-- 类名 -->
<class name="Teacher" table="t_teacher">
<id name="id" type="integer" column="id">
<generator class="native" />
</id>
<property name="name" type="string" column="name" />

<!-- students属性,Set集合。
表达的是本类与Student的多对多的关联关系

table属性:中间表(集合表)
key子元素:集合外键 (引用当前表主键的那个外键)
-->
<set name="students" table="t_teacher_student">
<key column="teacherId"></key>
<many-to-many class="Student" column="studentId"></many-to-many>
</set>
</class>
</hibernate-mapping>

学生实体类

package cn.itcast.g_hbm_manyToMany;

import java.util.HashSet;
import java.util.Set;

/**
* 学生
*
* @author 风清杨
* @version V1.0
*/
public class Student {
private Long id;
private String name;
private Set<Teacher> teachers = new HashSet<Teacher>();// 关联得老师位

public Long getId() {
return id;
}

public void setId(Long id) {
this.id = id;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public Set<Teacher> getTeachers() {
return teachers;
}

public void setTeachers(Set<Teacher> teachers) {
this.teachers = teachers;
}

@Override
public String toString() {
return "Student [id=" + id + ", name=" + name + "]";
}

}


老师实体类

package cn.itcast.g_hbm_manyToMany;

import java.util.HashSet;
import java.util.Set;

/**
* 老师
*
* @author 风清杨
* @version V1.0
*/
public class Teacher {
private Long id;
private String name;
private Set<Student> students = new HashSet<Student>();// 关联的学生们

public Long getId() {
return id;
}

public void setId(Long id) {
this.id = id;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public Set<Student> getStudents() {
return students;
}

public void setStudents(Set<Student> students) {
this.students = students;
}

@Override
public String toString() {
return "Teacher [id=" + id + ", name=" + name + "]";
}

}

组合映射文件

private static SessionFactory sessionFactory = new Configuration()//
.configure()//
.addClass(Student.class)// 添加Hibernate实体类(加载对应的映射文件)
.addClass(Teacher.class)// 添加Hibernate实体类(加载对应的映射文件)
.buildSessionFactory();