SessionFactoryTools类与上例相同。
1)学生类:
public class Student {
private Integer id;
private String name;
private Set<Teacher> teachers = new HashSet<Teacher>();
public Integer getId() {
return id;
}
public void setId(Integer 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 + "]";
}
}
2)老师类:
public class Teacher {
private Integer id;
private String name;
private Set<Student> students = new HashSet<Student>();
public Integer getId() {
return id;
}
public void setId(Integer 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 + "]";
}
}
3)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 package="map_2">
<!--类名:Student
类对应的表名:students
对应的中间表名:teacher_student
维护关系为:inverse=false,本类维护
外键名称:studentId
多对多对应类:Teacher
多对多对应类在中间表中的外键:teacherId
-->
<class name="Student" table="students">
<id name="id" type="int" column="id">
<generator class="native" />
</id>
<property name="name" type="string" column="name" length="20" />
<set name="teachers" table="teacher_student" inverse="false">
<key column="studentId"></key>
<many-to-many class="Teacher" column="teacherId"/>
</set>
</class>
</hibernate-mapping>
4)Teacher.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 package="map_2">
<!--类名:Teacher
类对应的表名:teachers
维护关系为:inverse=true,本类不维护
对应列的名称:teacherId
中间类的表名:teacher_student
多对多对应类的表名:Student
多对多对应类在中间表中的外键:studentId
-->
<class name="Teacher" table="teachers">
<id name="id" type="int" column="id">
<generator class="native" />
</id>
<property name="name" type="string" column="name" length="20" />
<set name="students" table="teacher_student" inverse="true">
<key column= "teacherId"></key>
<many-to-many class="Student" column="studentId" />
</set>
</class>
</hibernate-mapping>
5)主文件的配置:
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory name="foo">
<!-- 配置数据库信息 -->
<property name="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</property>
<property name="connection.url">
jdbc:mysql:///hibernate0
</property>
<property name="connection.driver_class">
com.mysql.jdbc.Driver
</property>
<property name="connection.username">root</property>
<property name="connection.password">root</property>
<!-- 其他配置 -->
<property name="hibernate.show_sql">false</property>
<property name="hibernate.format_sql">false</property>
<property name="hbm2ddl.auto">update</property>
<!-- 映射文件配置 -->
<mapping resource="map_2/Student.hbm.xml" />
<mapping resource="map_2/Teacher.hbm.xml" />
</session-factory>
</hibernate-configuration>