您的位置:首页 > 其它

Hibernate_5_老师与学生实例_多对多关联关系

2014-08-05 22:56 417 查看
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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: